1 第八章 深入探討樹狀結構. 2 目次 8.1 m-way 搜尋樹 8.2 B-tree 8.3 動動腦時間 8.4 練習題解答.

Slides:



Advertisements
Similar presentations
工職數學 第四冊 第一章 導 數 1 - 1 函數的極限與連續 1 - 2 導數及其基本性質 1 - 3 微分公式 1 - 4 高階導函數.
Advertisements

103 學年度縣內介聘申請說明會 南郭國小 教務主任張妙芬.  重要作業日程 : 1 、 5/1( 四 ) 前超額學校 ( 含移撥超額 ) 備文函報縣府教 育處輔導介聘教師名單 2 、 5/7( 三 ) 超額教師積分審查( 9 : : 00 、 13 : : 00 )。 3.
人文行動考察 羅東聖母醫院 老人醫療大樓 吳采凌 黃玨宸 劉映姍 陳嫚萱.
從閱讀擺渡到寫作 高雄女中 楊子霈.
两汉文学及汉代诗歌.
近现代文学概说.
一、亞洲位置 北極海 北亞 歐洲 太平洋 黑海 中亞 地中海 東亞 東北亞 西亞 南亞 非洲 東南亞 印度洋 圖2-5-1亞洲分區圖.
唐代文学概说 与初唐诗坛.
資料結構 老師:李崇明 助教:楊斯竣.
Tree (2): heap, deap, 2-3 tree, 2-3-4tree
Chapter 6 樹狀結構.
新世代計算機概論 第15章 資料結構.
公會組織糾紛 指導老師:柯伶玫 組員 495B0065 劉致維 495B0072 廖怡塵 495B0097 范家皓.
學校:臺中市立大業國民中學 領域:語文學習領域(國語文) 作者:林瑩貞
Chapter 5 樹狀結構.
焦點1 神經元與神經衝動.
社評分享 簡報者:洪健耀.
行政作用法 行政命令.
運用網路資源趣味化 「每日飲食指南份量」教學
1001倫理學讀書會 關於道德 報告人:謝孟釗.
能量買賣訊號 ◎波段賣訊:下列四項出現三項以上(含三項) 1、空方能量升至整波上漲之最高水準,且空方能量>多方 能量30%以上。
契約 課程:文書實務與應用 教師:黃湃翔老師.
教育人員退休新法說明會 106年12月14日 ★資料來源:參考銓敘部及高雄市教育局人事室簡報檔.
國文(一) 1.第一單元---青春印記 (學習篇、愛情篇) 2.第二單元---生活美學 3.第三單元---優遊家園.
Chap5 Graph.
第7章 樹與二元樹 (Trees and Binary Trees)
樹狀結構 Trees.
第七章 AVL搜尋樹 二元搜尋樹簡單易懂,不過有一個問題:它並非平衡樹。本章將介紹平衡的 AVL 搜尋樹,討論它的資料結構、函式,並設計程式使用它。
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
資料結構 第6章 樹狀結構.
(Circular Linked Lists)
奢侈稅成效分析與房市未來發展 吳中書 中華經濟研究院 第十九屆亞太財務經濟會計及管理會議 ~07.09.
資料結構–樹(Tree) 綠園.
4.1 單向鏈結串列 4.2 堆疊的加入與刪除 4.3 佇列的加入與刪除 4.4 其他型式的佇列
鄧姚文 資料結構 第六章:樹(Tree) 鄧姚文
Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree
Chap3 Linked List 鏈結串列.
第一章 直角坐標系 1-1 數系的發展.
Chapter 11 B-tree 11.1 m-way 搜尋樹 11.2 B-tree.
Ch 3 Dynamic Programming (動態規劃).
Chap4 Tree.
資料結構 7-1 陣列 7-2 鏈結串列 7-3 堆疊和佇列 7-4 樹狀結構.
資料結構使用Java 樹(Tree).
Reference to FUNDAMENTALS OF DATA STRUCTURE IN C++
Definition of Trace Function
小學四年級數學科 8.最大公因數.
大綱:加減法的化簡 乘除法的化簡 去括號法則 蘇奕君 台灣數位學習科技股份有限公司
挑戰C++程式語言 ──第8章 進一步談字元與字串
資料結構與C++程式設計進階 樹狀結構(Tree) 講師:林業峻 CSIE, NTU 11/ 12, 2009.
第 八 章 高等樹 課程名稱:資料結構 授課老師:________ 2019/4/28.
13.1 氣泡排序 13.2 選擇排序 13.3 插入排序 13.4 合併排序 13.5 快速排序
講師:郭育倫 第3章 基本資料結構 講師:郭育倫
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
6.1 樹狀結構的一些專有名詞 6.2 二元樹 6.3 二元樹的表示方法 6.4 二元樹的追蹤 6.5 引線二元樹 6.6 其它議題
勞工保險年金制度 簡報人:吳宏翔.
例題 1. 多項式的排列 1-2 多項式及其加減法 將多項式 按下列方式排列: (1) 降冪排列:______________________ (2) 升冪排列:______________________ 排列 降冪:次數由高至低 升冪;次數由低至高.
第7章 資料結構 7-1 陣列 7-2 鏈結串列 7-3 堆疊和佇列 7-4 樹狀結構.
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
( )下列何者正確? (A) 7< <8 (B) 72< <82 (C) 7< <8 (D) 72< <82 C 答 錯 對.
Parasitics Extraction (PEX) 與 postsimulation(posim)
法律的解釋 楊智傑.
堆積(Heap Tree) 授課老師:蕭志明.
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
Trees 授課者:驕芸.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
台灣房價指數 台灣房屋 中央大學 2011年7月29日.
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
Quantum-Wise軟體教學.
Presentation transcript:

1 第八章 深入探討樹狀結構

2 目次 8.1 m-way 搜尋樹 8.2 B-tree 8.3 動動腦時間 8.4 練習題解答

3 8.1 m-way 搜尋樹 何謂 m-way 搜尋樹? – 一棵 m-way 搜尋樹,所有節點的分支度均小於或等於 m – 可以是空樹 – 倘若 T 不是空樹,則必須具備下列的性質: 節點的型態是 n, A 0, (K 1, A 1 ), (K 2, A 2 ),…, (K n, A n ) ,其中 A i 是 子樹的指標 0 ≦ i ≦ n< m ; n 為節點上的鍵值數, K i 是鍵值 1 ≦ i ≦ n< m 節點中的鍵值是由小至大排列的,因此 K i < K i+1, 1 ≦ i< n 。 子樹 A i 的所有鍵值均小於鍵值 K i+1 , 0<i< n 。 子樹 A n 的所有鍵值均大於 K n ,而且 A 0 的所有鍵值均小於 K 1 。 A i 指到的子樹, 0 ≦ i ≦ n 亦是 m-way 搜尋樹。

4 8.1 m-way 搜尋樹 (con.t) Ex :下圖為 3-way 搜尋樹,共有 12 個鍵值 a 23, 48 12, 17 38, 45 55, 60 28, 32 b c d e f g 25 70

5 8.1 m-way 搜尋樹 (con.t) 下圖為上圖中每個節點之 3-way 搜尋表示法 – 由於 3-way 搜尋樹,每個節點的型態是 n, A 0, (K 1, A 1 ), (K 2, A 2 ),…,(K n, A n ) ,因此 a 節點的格式為 2, b, (23, c), (48, d) 節點格式 abcdefgabcdefg 2, b, (23, c),(48, d) 2, 0, (12, 0), (17, 0) 2, e, (28, 0), (32, f) 2, 0, (55, 0), (60, g) 1, 0, (25, 0) 2, 0, (38, 0), (45, 0) 1, 0, (70, 0)

6 8.1 m-way 搜尋樹 (con.t) m-way 搜尋樹的加入 – 以 3-way 搜尋樹為例,依序將 5 , 7 , 12 , 6 , 8 , 4 , 3 , 10 加入到搜尋樹,其中 x 表示目前無鍵值存在 (1) 加入 5 (2) 加入 7 (3) 加入 12 5, x 5, 7 12, x 5, 7

7 8.1 m-way 搜尋樹 (con.t) (4) 加入 6 (5) 加入 8 (6) 加入 4 12, x 5, 7 6, x 8, 12 5, 7 6, x 8, 12 5, 7 6, x 4, x

8 8.1 m-way 搜尋樹 (con.t) (7) 加入 3 (8) 加入 10 8, 12 5, 7 6, x 3, 4 8, 12 5, 7 6, x 3, 4 10, x

9 8.1 m-way 搜尋樹 (con.t) m-way 搜尋樹的刪除 刪除方法與二元搜尋樹相同 – 樹葉節點:直接刪除 – 非樹葉節點:以左子樹中最大鍵值或右子樹中最小鍵值 取代之 假設有一棵 3-way 搜尋樹如下: 8, 12 5, 7 6, x 3, 4 10, x

m-way 搜尋樹 (con.t) – 刪除 3 ,則直接刪除 – 刪除 8 8, 12 5, 7 6, x 4, x 10, x 10,12 5, 7 6, x 4, x

m-way 搜尋樹 (con.t) – 刪除 12 – 刪除 7 – 刪除 10 10, x 5, 7 6, x 4, x 5, 10 6, x 4, x 5, 6 4, x

B-tree 何謂 B-tree ? – 一棵 order 為 m 的 B-tree 是一 m-way 搜尋樹 – 可以是空樹 – 假若高度≧ 1 必需滿足以下的特性: 樹根至少有二個子節點,亦即節點內至少有一鍵值 除了樹根外,所有非失敗節點(即內部節點)至少有 個子節點,至多有 m 個子節點。此表示至少應有 –1 個 鍵值,至多有 m–1 個鍵值 ( 表示大於 m/2 的最小正整數 ) 所有的樹葉節點皆在同一階層

B-tree (con.t) 3-way 搜尋樹 vs. order 為 3 的 B-tree – 左圖不屬於 B-tree of order 3 ,主要是因為樹葉節點不在 同一階層上 ,30 6,8 50,70 a b c d e ,10 15, a b c d ef g h

B-tree (con.t) B-tree 的加入方法 – 從 B-tree 中開始搜尋,假使加入的鍵值 X 在 B-tree 中找 不到,則加入 B-tree 中。假設加入到 P 節點,若 該節點少於 m–1 個鍵值,則直接加入 該節點的鍵值已等於 m–1 ,則將此節點分為二,因為一棵 order 為 m 的 B-tree ,最多只能有 m–1 個鍵值 節點 P : –1, A 0, (K 1, A 1 ), …, (K –1, A –1 ) 節點 P’ : m–, A, (K +1, A +1 ), …, (K m, A m ) 並且將 K 和 P' 節點組成 (K, P') 加入其父節點。如下圖所示: P P' K

B-tree (con.t) Ex :此處的 B-tree 為 order 5 ,表示最多鍵值數為 , 40 60, 70, 80 5,1025,30 45,48 53,54 62,67 72,76 85,90,95 a b c d e f g h i j

B-tree (con.t) – 加入 88 由於 j 節點的鍵值少於 m–1 即 4 個,則直接加入即可 50 20, 40 60, 70, 80 5,1025,30 45,48 53,54 62,67 72,76 85,88,90,95 a b c d e f g h i j

B-tree (con.t) – 加入 98 ,由於 j 節點已有 m–1 個鍵值 ( 即 4 個 ) ,因此必須 將 j 節點劃分為二, j 、 k ,然後選出 K = K 3 = 90 ,並組 成( 90,k )加入 c 節點 50 20, 40 60, 70, 80, 90 5,1025,30 45,48 53,54 62,67 72,76 95,98 a b c d e f g h ij 85,88 k

B-tree (con.t) – 加入 91 – 加入 , 40 60, 70, 80, 90 5,1025,30 45,48 53,54 62,67 72,76 91,95,98 a b c d e f g h ij 85,88 k 50 20, 40 60, 70, 80, 90 5,1025,30 45,48 53,54 62,67 72,76 91,93,95,98 a b c d e f g h ij 85,88 k

B-tree (con.t) – 加入 99 ,以同樣的方法將 k 劃分為 k , l 並組成( 95, l ) 加入 c 節點,由於 c 節點已有 m–1 個鍵值,若再加入一 鍵值勢必也要劃分 c 節點為二,其為 c 、 m ,並將( 80, m )加入其父節點 a 50, 80 20, 40 5,1025,30 45,48 53,54 62,67 72,76 98,99 a b c d e f g h i j 85,88 k 60, 70 90, 95 91,93 l m

B-tree (con.t) B-tree 的刪除方法 – 一為刪除的節點是樹葉節點 – 二為刪除的節點為非樹葉節點 – 我們以 B-tree of order 5 如下圖來說明。假設已找到相關 的節點 P 50 20, 30 60, 80 10,1525,26 35,40,45 55,59 65,70,75 85,90

B-tree (con.t) 刪除的節點是樹葉節點 – 刪除鍵值 X 後,若 P 節點還有大於或等於 –1 個鍵值, 則刪除完畢,因為尚符合 B-tree 的定義,此處的 m 為 5 。 如將下圖的鍵值 70 刪除,結果為下圖所示: 50 20, 30 60, 80 10,1525,26 35,40,45 55,59 65,75 85,90

B-tree (con.t) – 刪除鍵值 X 後,若 P 節點的鍵值小於 –1 個,其不符合 B-tree 的定義,因此必須調整。我們分四種情況說明: (1) 找右邊最近的兄弟節點 p’ ,若 p’ 尚有大於或等於 個 鍵值,則將取出 P 的父節點 P f 中最大的鍵值放入 P ,然 後從 p’ 節點取出最小的鍵值放入 P 的父節點 P f ,如將下 圖的鍵值 26 刪除 50 20, 35 60, 80 10,1525,30 40,45 55,59 65,70,75 85,90 P P' PfPf

B-tree (con.t) (2) 若在 P 節點右邊找不到有一節點含有大於或等於 個鍵 值時,則找其左邊的兄弟節點,若有一左兄弟節點 q‘ ,則從 P 的父節點 P f 取出最小鍵值放入 P ,然後從 q‘ 中取出最大 的鍵值放入 P 的父節點 P f 。若欲刪除 85 ,情形如下圖所示: 50 20, 35 60, 75 10,1525,30 40,45 55,59 65,70 80,90 P q' PfPf

B-tree (con.t) 刪除的節點為非樹葉節點 – 假若 P 節點的型態為 n,A 0,(K 1,A 1 ), (K 2,A 2 ),…,(K n,A n ) , 其中 K i = x , 1 ≦ i ≦ n 。刪除 k 時找尋其右子樹中的最左 邊的樹葉節點 P’ ,在 P’ 中找一個最小值 y ,將 y 代替 K i 值,如下圖,注意!也可以找尋其左子樹中最右邊的樹 葉節點 P’ ,在 P’ 中找一最大值 y ,將 y 代替 K i 值 50 20, 30 10,1525,26 35,40,45 52,55,59 85,90 i g f e d b c 65,70,75 60, 80 h

B-tree (con.t) – 若刪除 50 ,找到 P’ 節點為 g ,從中取出最小值 52 ,並 代替 , 30 10,1525,26 35,40,45 55,59 85,90 i g f e d b c 65,70,75 60, 80 h a

B-tree (con.t) – 若此時再刪除 52 ,由於從 P‘ 節點 ( 即 g) 找到鍵值 55 代替 52 後,其鍵值數小於 –1 個鍵值,此時就好比刪除樹 葉節點 g 的情形,可向其右兄弟節點 h 借一鍵值 65 (因為 在節點的鍵值個數大於 –1 ),其結果如下所示: a 55 20, 30 10,1525,26 35,40,45 59,60 85,90 i g f e d b c 70,75 65, 80 h

B-tree (con.t) – 若繼續刪除 55 ,找到 P‘ 節點為 g ,將最小值 59 代替 55 , 由於其鍵值數小於 –1 個鍵值,且其兄弟節點 h 也沒有 大於 –1 的鍵值,故將 g 、 h 與 c 的鍵值 65 合併於 g' 節點, 結果如下圖所示: 59 20, 30 10,1525,26 35,40,45 60,65,70,75 85,90 i g' f e d b c 80 a

B-tree (con.t) – 此時 c 節點的鍵值數小於 –1 ,且其兄弟節點的鍵值數 不大於 –1 ,故將 b 、 c 與 a 節點合併為 a' ,結果如下: 20, 30, 59, 80 10,1525,26 35,40,45 60,65,70,75 85,90 i g f e d a'

B-tree (con.t)