SlideShare a Scribd company logo
授課教師:陳士杰
國立聯合大學 資訊管理學系
資料結構(Data Structures)
Course 8: Advance Tree (高等樹)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 2
▓ Outlines
本章重點
Extended Binary Tree
Min-weighted External Path Length
Binary Search Tree的效益
AVL Tree
M-way Search Tree
B Tree
B+ Tree
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 3
Def: 具有External Node的B.T.稱之。
一個二元樹具有n個節點,若以Link List表示,則會有 n+1 條空
Link,在這些空Link上加上特定節點,稱為External Node (或
Failure Node),其餘Nodes稱Internal Nodes。
範例:
外部節點數 = 內部節點數 + 1 (P.S.: 2n – (n-1)=n+1)
為何外部節點又被稱為失敗節點?
以二元搜尋樹的角度來説,若搜尋到外部節點時,代表在原本的二
元樹中找不到想要的資料,也就是搜尋失敗。
▓ Extended Binary Tree (延伸二元樹)
A
B D
C E
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 4
Internal path Length (I) and Extended path
Length (E)
Def:
定理:E = I + 2n (n為內部節點個數)
範例 1:一個具有5個Internal Nodes的 Extended B.T.,其I
値與E値分別為?
I = 0+1+1+2+2 = 6
E = 2+2+3+3+3+3= 16
=I +2n



n
1
i
)
i
(Root
I 的路徑長度
到內部節點




1
n
1
j
)
j
(Root
E 的路徑長度
到外部節點
A
B D
C E
0
1 1
2 2
2 2
3 3
3 3
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 5
範例 2: 一個具有n個Internal Nodes的Skewed Extended
B.T.,其I値與E値分別為?
I = 0+1+2+…+(n-1) = [(n-1)n]/2
E = 1+2+3+…+2n= [(n-1)n]/2 + 2n
= [n(n+3)]/2
= I + 2n
結論:
E値與I値成正比
愈平衡 (即:高度愈小) 的Extended B.T.,其E値與I値愈小
然而,若外部Node有加權値時,則第二個結論不見得成立!!
0
1
2
n-1
2
3
n n
1
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 6
Weighted External Path Length (W.E.P.L.; 加權
外部路徑長度)
Def: Extended B.T.若有n個內部節點,則會有 n+1 個外部
節點。分別給予毎一個外部節點 1 個加權値,則:
範例:
W.E.P.L. = 3×2+3×3+2×5+1×13 W.E.P.L. = 2×(2+3+5+13)
=38 =46








 

1
n
1
j )
j
(
)
j
(Root
W.E.P.L.
的加權值
外部節點
的路徑長度
到外部節點
2 3
5
13
2 3 5 13
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 7
當節點有加權値,且毎個加權値不盡相同時,則當樹愈平
衡時,不見得其外部路徑長度就愈小!!
問題:
若有三個 (n個) 內部節點,什麼情況它們的Weighted E.P.L.是最
小的?
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 8
Def:
給予(n+1)個外部節點加權値,在 Cn
2n/(n+1)顆樹中,具有最小的
W.E.P.L.稱之。
主要應用:
(n+1)個訊息傳輸,其平均解碼時間最小 (或:編碼位元長度最小)
Min. W.E.P.L. (最小加權外部路徑長度)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 9
求Min. W.E.P.L.的方法有兩種:
Brute Force法 (暴力法)
Huffman Algorithm (霍夫曼演算法)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 10
Huffman Algorithm (霍夫曼演算法)
令W為外部節點加權値的集合,Huffman Algo.的執行歩
驟如下:
自W中取出2個具最小加權値的節點
替這2個節點建立Extended B.T.
再將此2個節點的加權値和加入W中
Repeat前三歩直到W中只剩一個加權値為止
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 11
範例:有6個外部節點,其加權値分別為:2, 3, 5, 7, 9, 13。求Min.
W.E.P.L.。
Ans: W = {2, 3, 5, 7, 9, 13}
2 3
5

(數値放左leaf或放右leaf對於找min. W.E.P.L.無影響,
但習慣上將小的放在左邊)
 W = {5, 5, 7, 9, 13}
 W = {10, 7, 9, 13}
1
0
2 3
5

5
 1
0
2 3
5 5 7 9
1
6
 W = {10, 16, 13}
 W = {23, 16}

1
0
2 3
5 5 7 9
1
6
13
2
3
 W = {39}
3
9

7 9
1
6
1
0
2 3
5 5
13
2
3
• Huffman Tree
• Min. W.E.P.L. = 93
(2×7+2×9+2×13+3×5+4×2+4×3)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 12
Huffman Algo.的精神:
若希望求得加權路徑長度總和為最小,則 “加權値愈重的節點,
離Root要愈近” !!
建樹時是從底層建起;在建樹的過程中,皆是取當時在W集合中
權重値最輕的兩個節點。
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 13
【應用 1】有6個Message要傳輸,其出現頻率如下:
今希望平均解碼時間最小,則:
解碼時間最短的Encoding/Decoding Tree為何?
各Message之編碼內容為何?
平均最小編碼位元長度為何?
Ans:
Message:外部節點;出現頻率:加權値
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 14
解碼時間最短的Encoding/Decoding Tree :
將出現頻率通分後,以分子當加權値建立Huffman Tree
Encoding/Decoding Tree (都是同一顆Tree):
左分支:0
右分支:1
3
9
7 9
1
6
1
0
2 3
5 5
13
2
3
0
0 0
0
0
1
1 1
1
1
M4 M5
M1 M2
M3
M6
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 15
各Message之編碼內容: (由Root開始走)
M1 = 1000
M2 = 1001
M3 = 101
M4 = 00
M5 = 01
M6 = 11
Message Decoding Time = Message Bit數
= Root到外部節點的路徑長
度
經常出現的訊息,Bit數要愈少;即路徑長度要愈短。
3
9
7 9
1
6
1
0
2 3
5 5
13
2
3
0
0 0
0
0
1
1 1
1
1
M4 M5
M1 M2
M3
M6
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 16
平均最小編碼位元長度:
∑(編碼位元數×出現頻率)
3
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 17
【應用 2】有一字串AABBBACCBADDECBA,求Encoding/
Decoding Tree為何?
Ans:
毎個字元的出現頻率:
A5次
B5次
C3次
D2次
E1次
1
6
3
6
3 5 5
1
0
0
0
0
0
1
1 1
1 C
D
A B
1 2
E
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 18
▓ Binary Search Tree 的效益
當B.S.T.建立之後,可以用來搜尋資料。因此,由平均比較
次數來決定其效益。
若平均比較次數愈低,則效益愈高
例 1:
成功搜尋的平均比較次數:
(1+2+2+3+3)/5 = 11/5 = 2.2
結論:不考慮加權値或加權値皆相同的情形下
愈平衡的Binary Search Tree,其平均比較次數愈小,Big-O≈
O(log n)。
愈偏斜的Binary Search Tree,其平均比較次數愈大,Big-O ≈
O(n)。
1
0
5
2
0
8
1
5
1
2 2
3
3
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 19
在靜態的環境下,一般Binary Search Tree的建構方法可
以有較充裕的時間將欲搜尋的所有資料建構成較平衡的
Binary Search Tree,以提升後續資料搜尋時的效率。
然而,若是在動態的環境下,資料可以隨時Insert / Delete。
此時,一般Binary Search Tree的建構方法會産生Skewed
Binary Tree,導致資料搜尋的效率變差 (即:O(n))。
需要AVL Tree,面對動態資料,Tree的高度均維持在高度
平衡的情況。
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 20
▓ AVL Tree (高度平衡樹)
Def: 為一個Height Balance的Binary Search Tree,可以為
空,若不為空,則滿足:
|hL - hR|  1,其中 hL 與 hR 為左、右子樹的高度。
左右子樹亦是AVL Tree (AVL Tree也有遞迴的特性)
(前題:不考慮加權値或加權値皆相同的情形下)
範例 1:下列Binary Search Tree何著為AVL Tree?
+1
+1 -1
-1 0 0
0
+2
-1
+1
0
0
0
() ()
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 21
範例 2:下列Binary Tree是否為AVL Tree?
8 > 5,違反了Binary Search Tree的條件,不是AVL Tree
Balance Factor (平衡因子) of a node:
Def: B.F.= hL - hR
在AVL Tree中,所有節點的B.F.只有三種値: -1,0,+1
()
26
5 70
8 2 50 80

國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 22
AVL Tree 不平衡的情況
建構AVL Tree的過程中,當插入一個新的節點時,可能會
造成以下四種不平衡的情況:
LL不平衡
LR不平衡
RL不平衡
RR不平衡
L
L
+2
+1
0
 離新進節點最近
的不平衡點
因為新進節點是在此最近不平衡點的LL方向,
故稱為LL不平衡 (只看兩階)
0
+1
+2
L
R
R
L
0
+1
-2
R
R
0
-1
-2
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 23
以下AVL Tree插入新節點後,會産生何種不平衡?
0
0
0
0
+1
-1 -1
-1 -1
+2
LR不平衡
(只看兩階)
0
+1
-2
RL不平衡
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 24
原則:
由於四種不平衡情況會牽渉到三個節點,且三個節點內存放的値
會有小、中、大三種不同的資料。故調整時,三個節點的中間値往
上拉,小的値放左,大的値放右。
調整後,若産生沒有父親的子樹,則以二元搜尋樹插入資料的方
式來判斷該放哪裡。
AVL Tree 不平衡情況的調整方式
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 25
範例 1:若有以下四種不平衡的情況,該如何調整:
LL不平衡
LR不平衡
RL不平衡
RR不平衡
B
A
C
L
L
大
中
小
C
B
A
中
小
大
L
R
A
C
B
R
L
中
大
小
A
B
C
R
R
大
中
小
B
A
C
C
B A
C
A B
B
A C
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 26
範例 2:若插入資料時發生以下二種情況,該如何調整:
Case 1:
Case 2
0
0
0
-1
+1
+2
(LR不平衡)
A
B
AR
BL
C
大
小
中
CL
A
B AR
BL C
CL
A
B
C
0
-1
-2
(RR不平衡)
A
B
C
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 27
範例 3:給予下列數字,請建立AVL Tree:
5, 26, 77, 2, 8, 10, 19, 12
Ans:
5
26
5
26
5
77
26
5
77
(RR不平衡)
26
5 77
26
5 77
2
26
5 77
2 8
10
26
5 77
2 8
+2
-1
-1
0
0
0
26
5
8
(LR不平衡)
10
26
5
77
2
8
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 28
範例 3:給予下列數字,請建立AVL Tree:
5, 26, 77, 2, 8, 10, 19, 12
Ans: (續)
8
5 26
77
2 12
10 19
10
26
5
77
2
8
19
10
26
5
77
2
8
19
12
0
-1
-2 10
19
12
(RL不平衡)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 29
範例 4:下列英文月份的AVL Tree,若插入 “Feb” 之結果為何? (順序:
A<B<C<…<Z)
Ans:
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 30
定理:形成高度h的AVL Tree,所須要的最少節點個數為:Fh+2-1 (F:費
式數)
範例 1:形成高度為3的AVL Tree,
所需的最少節點個數為 4
所需的最多節點個數為 7
Fh+2-1 = F3+2-1= 4 23-1=7
範例 2:一個AVL Tree有15個節點,則:
最大高度為 5
最小高度為 4
n … 7 8
Fn … 13 21
h=5 h=6
    4
1)
(15
log
1)
(n
log 2
2 



(用最少的點撐出最大的高度)
(完整二元樹)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 31
如:
如何調整成AVL Tree?
h
h-1
h
BL
A
B
C
CL CR
AR
+1
0
0
h
h-1
h
h
+2
-1
-1
BL
A
B
C
CL CR
AR
BL
A
B
C
CL CR
AR
L
R
CL CR
BL
A
B
C
AR
LR調整
+1
0
0
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 32
▓ m-way Search Tree
主要用於外部搜尋 (External Search)
先前的樹状搜尋方法皆為內部搜尋 (Internal Search)
Internal Search:
Def: 資料量少,可以一次全部置於Memory中進行search之工作
External Search:
Def: 資料量大,無法一次全置於Memory中,須藉助輔助儲存體 (E.g.
Disk),進行分段search之工作
Tree Degree = m,且m>2
為何不用二元樹的結構?
因為外部搜尋的資料量頗大,若還是以二元樹的結構存放資料,則
樹的高度將很高,資料搜尋將頗為費時。
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 33
目的:提升External Search 的效益
要提升External Search的效益,則需降低Disk I/O的次數
要有效降低Disk I/O的次數,則需要降低Search Tree的高度
要能夠降低Search Tree的高度,則需增大Tree Degree: m
範例:找 “15” 這筆資料
Disk
10
40
15
5
26
30
28
(B.S.T. 的 Degree最大為2時)
: Disk out
: Disk in
Block
26
10
15
要3次的Disk I/O
改進
(Degree最大為4時)
Disk
5, 10, 20
15, 16
要2次的Disk I/O
5, 10, 20
2, 3 8 15, 16 30, 40, 50
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 34
若m為無窮大時,雖然高度只有一層,但因為Data量太大,
無法一次放到Memory中。∴m以Memory Size為限。
若所有資料可以一次全放到記憶體中,則為Internal Search的議
題,不需用到外部搜尋的技術。
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 35
Def: m-way Search Tree T是一個所有節點的分支度≤m的樹。T可以
是空樹。若T不為空樹時,則具有下列性質:
節點結構為:n, A0, (k1, A1), (k2, A2), …, (kn, An)
鍵値個數 n ≤ m-1
ki: 鍵値 (資料)
Ai: 指標,指向存放大小介於 ki 與 ki+1 之間的資料之節點所在
Ex:
節點中的鍵値 (資料) 是由小至大排序的
子樹同樣是m-way Search Tree (遞迴定義)
子樹Ai內的資料均小於鍵値ki+1;子樹An內的資料均大於鍵値kn。
k2, kn
…
k3,
k1,
n
A0 A1 A2 A3 An
5, 10, 20
2, 3 8 15, 16 30, 40, 50
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 36
m-way Search Tree之相關定理
定理:高度為h的m-way Search Tree:
最多的Node個數 = ?
最多的Key (Data) 個數 = ?
Level 毎層最多的Node個數
1 m0 = 1
2 m
3 m2
h mh-1
…
… … …
…
∴高度為h的m-way Search Tree最多的Node個數 = m0 + m1 + m2 + … + mh-1
= (mh - 1)/(m-1)
∴高度為h的m-way Search Tree最多的Data個數 = (m-1) × (mh - 1)/(m-1)
= (mh - 1)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 37
m-way Search Tree雖利用增大Tree的Degree來降低
Search Tree的高度,以減少Disk I/O 的次數,但若此Tree不
平衡,也可能會變相地增加Disk I/O的次數。
因此發展出B-tree of order m。
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 38
▓ B-Tree
Def: 是一個Balanced m-way search tree。可以為空,若不
為空,則滿足:
Root至少有2個Childs
除了Root及Failure Node之外,其餘Node的分支度介於m/2及m之
間
所有的Failure Node皆位於同一Level。(即:所有葉子節點位於同一
Level)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 39
範例:有一B-tree of order m如下:
若m = 3 (即:B-tree of order 3)
Root:2 ≤ degree ≤ 3;
非Root與非Leaf的節點: m/2 ≤degree≤m  2 ≤ degree ≤ 3
B-tree of order 3又稱 2-3 tree
若m = 4 (即:B-tree of order 4)
Root:2 ≤ degree ≤ 4;
非Root與非Leaf的節點: m/2 ≤degree≤m  2 ≤ degree ≤ 4
B-tree of order 4又稱 2-3-4 tree
若m = 5 (即:B-tree of order 5)
Root:2 ≤ degree ≤ 5;
非Root與非Leaf的節點: m/2 ≤degree≤m  3 ≤ degree ≤ 5
Failure Node
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 40
定理:高度為h的B-Tree:
最多的Node個數 = ?
最多的Key (Data) 個數 = ?
B-Tree of order m之相關定理
由於B-Tree中,毎一個節點的Degree最大皆可到m (m可自定)
所以其結果等同於m-way Search Tree的分析結果!!!
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 41
B-Tree之Insert動作 (假設要插入資料x)
Step:
 先做Search,以找到適當的插入節點,將x放入該節點中
 檢査該節點有無Overflow
• 無Overflow (key數m-1),則OK並跳出。
• 有Overflow (key數 m)則:
作 “Split” 處理
針對父點,goto  //即:作完Split後,針對父點檢査是否有Overflow
如何做 “Split” 處理
將第 m/2 個鍵値上拉到父點,其餘鍵値分成左、右兩個子點。
K1, k2, …, , km
k m/2
父點 …, km/2 , …
K1, k2, …, k m/2 -1
父點
k m/2 +1,…, km
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 42
範例:有一B-tree of order 3如下,若連續Insert “2”, “130”, “8”會得
到什麼結果。
Ans:
Insert “2”
無Overflow,OK.
Insert “130”
有Overflow
6
0
10,
30 90
5 20 35 80 100,
120
60
10, 30 90
2, 5 20 35 80 100, 120
60
10,
30 90
2, 5 2
0
3
5 80 100, 120,
130
60
10, 30 90,
120
2, 5 20 35 80 10
0
13
0
將第 3/2 個
鍵値上拉
父點無Overflow
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 43
Insert “8”
有Overflow 60
10, 30 90,
120
2, 5,
8 20 35 80 10
0
13
0
父點有Overflow,將
第 3/2 個鍵値上拉
將第 3/2 個
鍵値上拉
60
5, 10,
30
90,
120
2 20 35 80 10
0
13
0
8
3
0
10,60
90,
120
2 20 35 80 10
0
13
0
8
5
父點無Overflow
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 44
練習範例
給予1, 2, 3, 4, 5, 6, 7, 8,請建立2-3 tree (B-tree of order 3)
Ans:
4
2 6
1 3 5 7, 8
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 45
B-Tree之Delete動作 (假設要刪除資料x)
Step:
先做Search,以找到x所在之節點
分成下列兩個Case來處理:
Case 1: x位於Leaf Node
Case 2: x位於Non-leaf Node
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 46
Case 1: x位於Leaf Node
需進行下列歩驟:
 Delete x
 檢査該Node有無Underflow
沒有Underflow (即:鍵値數目  m/2 -1) 則OK,結束工作。
有Underflow (即:鍵値數目 < m/2 -1),則:
先嘗試作 “Rotation”,若完成工作則結束。
若無法做“Rotation”,則作 “Combination”。Combination做完,針對父點,
goto 。
 B-tree of order m中,除了樹根與失
敗節點之外,其它的Internal Node的
degree是介於m/2 ~m之間,毎個
Internal Node內的鍵值最多有m-1個
鍵値,最少有m/2 -1個鍵値!!
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 47
… …
Rotation的處理,可分成:
右旋:
 將右兄弟的最小鍵値傳至父點,
 將原父點的最大鍵値傳給Overflow的節點做為其最大鍵値
左旋:
 將左兄弟的最大鍵値傳至父點,
 將原父點的最小鍵値傳給Overflow的節點做為其最小鍵値
這些Rotation的結果可保有Binary Search Tree的鍵値順序,即:左子
樹(小) - 樹根(中) - 右子樹(大)
◇
◆
● □
Underflow


… …
◇
□
◆
●
鍵値數> m/2 -1
鍵値數> m/2 -1


… …
◇
□
◆
●
◇:父節點的最大鍵値
●:左兄弟的最大鍵値
□:右兄弟的最小鍵値
◆:父節點的最小鍵値
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 48
… …
Combination的處理,可分成:
右合併:
 將父點右邊的最大鍵値傳給Overflow的節點做為其最大鍵値
 將Overflow的節點與其有相同鍵値來源之兄弟合併成一個節點
左合併:
 將父點左邊的最小鍵値傳給Overflow的節點做為其最小鍵値,
 將Overflow的節點與其有相同鍵値來源之兄弟合併成一個節點
這些Combination的結果可保有Binary Search Tree的鍵値順序,即:左
子樹(小) - 樹根(中) - 右子樹(大)
◇
◆
● □
Underflow


…
…
◇□
◆
●
鍵値數= m/2 -1
鍵値數= m/2 -1


… …
◇
□
◆
●
◇:父節點的最大鍵値
●:左兄弟的最大鍵値
□:右兄弟的最小鍵値
◆:父節點的最小鍵値
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 49
範例 1:有一B-tree of order 3如下,若連續Delete “5”, “65”, “50”會得
到什麼結果。
Ans: (p.s.: 2  degree  3  1  鍵値數量  2)
Delete “5”
無Underflow,OK.
Delete “65”
有Underflow
6
0
30,
40 80
5,
10 35 50 65 100,
120
6
0
30,
40 80
1
0 35 50 65 100,
120
6
0
30,
40 80
1
0 35 50 100,
120
6
0
30,
40
10
0
1
0 35 50 80 12
0
右旋
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 50
Delete “50”
有Underflow
6
0
35,
40
10
0
1
0
30
80 12
0
右合併
6
0
30,
40
10
0
1
0 35 80 12
0
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 51
範例 2:有一B-tree of order 3如下,若連續Delete “80”, “10”會得到什
麼結果。
Ans: (p.s.: 2  degree  3  1  鍵値數量  2)
Delete “80”
有Underflow.
父點有Underflow
6
0
20,
40 100
1
0 30 50 80 12
0
6
0
20,
40 100
1
0 30 50 12
0
左(右)合併
6
0
20,
40
1
0 30 50 100,
120
~~~~~~~~~~~~~~~~~~~~~~~~~
左旋 4
0
2
0 60
1
0 30 50 100,
120
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 52
Delete “10”
有Underflow.
父點有Underflow
父點又有Underflow
4
0
20,
30
60
50 100,
120
~~~~~~~~~~~~~~~~~~~~~~~~~
合併
4
0
2
0 60
30 50 100,
120
合併
20,
30
40,
60
50 100,
120
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
(若Root為Underflow,則消去)
20,
30
40,
60
50 100,
120
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 53
Case 2: x位於Non-leaf Node
需進行下列歩驟:
 (a). 以x的右子樹中之最小鍵値取代x;或是
(b). 以x的左子樹中之最大鍵値取代x
 返回Case 1作後續處理。
範例 1:有一B-tree of order 3如下,若連續Delete “60”, “100”會得到
什麼結果。
Ans: (p.s.: 2  degree  3  1  鍵値數量  2)
6
0
80,
100
30
7
0
90 12
0
40
5,
10
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 54
Delete “60”
要選擇右子樹最小 or 左子樹最大的鍵
値來取代被刪除的資料,以最方便的為
優先!!
Rotation > Combination
返回Case 1做後續處理
80,
100
30
7
0
90 12
0
40
5,
10
4
0
80,
100
30
7
0
90 12
0
5,
10
4
0
80,
100
10
7
0
90 12
0
30
5
左旋
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 55
Delete “100”
要選擇右子樹最小 or 左子樹最大的鍵
値來取代被刪除的資料,以最方便的為
優先!!
Rotation > Combination
返回Case 1做後續處理
4
0
80,
10
7
0
90 12
0
30
5
4
0
80, 90
10
7
0
12
0
30
5
右合併
4
0
80
10
7
0
90,
120
30
5
4
0
90
10
12
0
70,
80
30
5
(若使用左合併)
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 56
▓ B+ Tree
Def:
是B Tree之變形,也是用於External Search/Sort上。
可以支援ISAM (Index Sequential Access Method)之實施,常用於
DBMS內層製作。
以Order-3為例:
7,
11
2, 4 9
14.
20
1, 2 4 7 9 11 14 18, 20 21, 23
Index Layer
Data Blocks
Layer
國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 57
B+ tree分為兩個Layer
Index Layer:
採B tree結構。僅用來存放索引,以幫助User正確地找到所需之Data
Block。
Data Blocks Layer:
用以存放Data,且Blocks之間以Link List串連。
Data Block存放資料時,通常不會受到B tree的Order限制。因此,每
個Data Block最多要塞多少筆Data可自訂。當然也可以和Index Layer
內的節點一致。
何謂Index Sequential Access?
透過Index找到對應的起始Data Block之後,即可循序讀取其它資
料。
Ex: 找出大於等於7~小於20的資料。

More Related Content

More from LinPhil

330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
LinPhil
 
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
LinPhil
 
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
LinPhil
 
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
LinPhil
 
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.pptdspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
LinPhil
 
106年度親師座談 資訊安全106年度親師座談 資訊安全106年度親師座談 資訊安全.ppt
106年度親師座談資訊安全106年度親師座談資訊安全106年度親師座談資訊安全.ppt106年度親師座談資訊安全106年度親師座談資訊安全106年度親師座談資訊安全.ppt
106年度親師座談 資訊安全106年度親師座談 資訊安全106年度親師座談 資訊安全.ppt
LinPhil
 
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
LinPhil
 
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
LinPhil
 

More from LinPhil (8)

330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
330259工程數學(二)ch5.4工程數學(二)ch5.4工程數學(二)ch5.4.ppt
 
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
330258工程數學(二)ch5.2工程數學(二)ch5.2工程數學(二)ch5.2.ppt
 
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
330256工程數學(二)CH5.1工程數學(二)CH5.1工程數學(二)CH5.1.ppt
 
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論資料庫導論.pdf
 
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.pptdspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
dspch01資料結構資料結構資料結構資料結構資料結構資料結構資料結構資料結構.ppt
 
106年度親師座談 資訊安全106年度親師座談 資訊安全106年度親師座談 資訊安全.ppt
106年度親師座談資訊安全106年度親師座談資訊安全106年度親師座談資訊安全.ppt106年度親師座談資訊安全106年度親師座談資訊安全106年度親師座談資訊安全.ppt
106年度親師座談 資訊安全106年度親師座談 資訊安全106年度親師座談 資訊安全.ppt
 
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報資訊安全宣導簡報
 
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理常見精神疾病的辨識與處理
 

Recently uploaded

year three sains 三年级科学单元三 3.2 营养素 (2).pptx
year three sains 三年级科学单元三 3.2 营养素 (2).pptxyear three sains 三年级科学单元三 3.2 营养素 (2).pptx
year three sains 三年级科学单元三 3.2 营养素 (2).pptx
CHINTZEHUAYMoe
 
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
微信 oojjiijj 接单
 
constitution_exam_constitution_exam_12345
constitution_exam_constitution_exam_12345constitution_exam_constitution_exam_12345
constitution_exam_constitution_exam_12345
ssusere1a91f
 
constitution_basic_right_constitution_basic_right
constitution_basic_right_constitution_basic_rightconstitution_basic_right_constitution_basic_right
constitution_basic_right_constitution_basic_right
ssusere1a91f
 
constitution_central_local_constitution_central_local
constitution_central_local_constitution_central_localconstitution_central_local_constitution_central_local
constitution_central_local_constitution_central_local
ssusere1a91f
 
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
微信 oojjiijj 接单
 
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
jhujyunjhang
 
constitution_people_constitution_people_
constitution_people_constitution_people_constitution_people_constitution_people_
constitution_people_constitution_people_
ssusere1a91f
 
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
微信 oojjiijj 接单
 
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
微信 oojjiijj 接单
 
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
ssusere1a91f
 
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
微信 oojjiijj 接单
 
constitution_law_constitution_law_123456
constitution_law_constitution_law_123456constitution_law_constitution_law_123456
constitution_law_constitution_law_123456
ssusere1a91f
 
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
微信 oojjiijj 接单
 
2024-06-14 師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
2024-06-14  師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf2024-06-14  師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
2024-06-14 師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
Taiwan AI Academy
 
constitution_law_constitution_law_1234567
constitution_law_constitution_law_1234567constitution_law_constitution_law_1234567
constitution_law_constitution_law_1234567
ssusere1a91f
 

Recently uploaded (16)

year three sains 三年级科学单元三 3.2 营养素 (2).pptx
year three sains 三年级科学单元三 3.2 营养素 (2).pptxyear three sains 三年级科学单元三 3.2 营养素 (2).pptx
year three sains 三年级科学单元三 3.2 营养素 (2).pptx
 
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
作为一个黑客,你是不是也有这样的困扰? 🤔成绩不够好怎么办呢?不要灰心哦!也许我们可以利用一些小技巧来让它变得更好看。🔍🖋 #hack #college ...
 
constitution_exam_constitution_exam_12345
constitution_exam_constitution_exam_12345constitution_exam_constitution_exam_12345
constitution_exam_constitution_exam_12345
 
constitution_basic_right_constitution_basic_right
constitution_basic_right_constitution_basic_rightconstitution_basic_right_constitution_basic_right
constitution_basic_right_constitution_basic_right
 
constitution_central_local_constitution_central_local
constitution_central_local_constitution_central_localconstitution_central_local_constitution_central_local
constitution_central_local_constitution_central_local
 
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
黑客篡改成绩单?这可是真事儿!🔍 实测过程全程曝光,你我皆知。一起来看看这个神奇操作吧~ 🎬【微信:oojjiijj】
 
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
20240521-資料清理-OpenRefine-劉璟儀.pdf_20240521-資料清理-OpenRefine-劉璟儀.pdf
 
constitution_people_constitution_people_
constitution_people_constitution_people_constitution_people_constitution_people_
constitution_people_constitution_people_
 
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
🚀改挂科绩点,留学成绩轻松搞定!|找黑客帮忙?太酷了吧~ 🎉🔥 |再也不用担心考试挂科啦【微信:oojjiijj】
 
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
澳门大学成绩修改,1小时快速搞定!💡 苦于提交资料太晚?雅思分数迟迟不达标?别担心,我们的专业团队为您量身定制个性化解决方案。只需10分钟,轻松修改【微信...
 
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
wolf_wolf_wolf_wolf_wolf_wolf_wolf_wolf_
 
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
💥 改天我还在想,黑客是如何把成绩单改了的?||原来如此!|这次考试分数及格了吧
 
constitution_law_constitution_law_123456
constitution_law_constitution_law_123456constitution_law_constitution_law_123456
constitution_law_constitution_law_123456
 
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
🎉黑客改成绩,只需1小时! 想知道学霸的秘诀吗?跟着我们一起来揭秘吧~ 🤔💡 #技术分享 #考试技巧 #快速提分【微信:oojjiijj】
 
2024-06-14 師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
2024-06-14  師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf2024-06-14  師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
2024-06-14 師大_AI 新浪潮下的產業人才培育_90 mins_蔡明順.pdf
 
constitution_law_constitution_law_1234567
constitution_law_constitution_law_1234567constitution_law_constitution_law_1234567
constitution_law_constitution_law_1234567
 

course08資料結構(Data Structures) Advance Tree (高等樹).ppt

  • 2. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 2 ▓ Outlines 本章重點 Extended Binary Tree Min-weighted External Path Length Binary Search Tree的效益 AVL Tree M-way Search Tree B Tree B+ Tree
  • 3. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 3 Def: 具有External Node的B.T.稱之。 一個二元樹具有n個節點,若以Link List表示,則會有 n+1 條空 Link,在這些空Link上加上特定節點,稱為External Node (或 Failure Node),其餘Nodes稱Internal Nodes。 範例: 外部節點數 = 內部節點數 + 1 (P.S.: 2n – (n-1)=n+1) 為何外部節點又被稱為失敗節點? 以二元搜尋樹的角度來説,若搜尋到外部節點時,代表在原本的二 元樹中找不到想要的資料,也就是搜尋失敗。 ▓ Extended Binary Tree (延伸二元樹) A B D C E
  • 4. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 4 Internal path Length (I) and Extended path Length (E) Def: 定理:E = I + 2n (n為內部節點個數) 範例 1:一個具有5個Internal Nodes的 Extended B.T.,其I 値與E値分別為? I = 0+1+1+2+2 = 6 E = 2+2+3+3+3+3= 16 =I +2n    n 1 i ) i (Root I 的路徑長度 到內部節點     1 n 1 j ) j (Root E 的路徑長度 到外部節點 A B D C E 0 1 1 2 2 2 2 3 3 3 3
  • 5. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 5 範例 2: 一個具有n個Internal Nodes的Skewed Extended B.T.,其I値與E値分別為? I = 0+1+2+…+(n-1) = [(n-1)n]/2 E = 1+2+3+…+2n= [(n-1)n]/2 + 2n = [n(n+3)]/2 = I + 2n 結論: E値與I値成正比 愈平衡 (即:高度愈小) 的Extended B.T.,其E値與I値愈小 然而,若外部Node有加權値時,則第二個結論不見得成立!! 0 1 2 n-1 2 3 n n 1
  • 6. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 6 Weighted External Path Length (W.E.P.L.; 加權 外部路徑長度) Def: Extended B.T.若有n個內部節點,則會有 n+1 個外部 節點。分別給予毎一個外部節點 1 個加權値,則: 範例: W.E.P.L. = 3×2+3×3+2×5+1×13 W.E.P.L. = 2×(2+3+5+13) =38 =46            1 n 1 j ) j ( ) j (Root W.E.P.L. 的加權值 外部節點 的路徑長度 到外部節點 2 3 5 13 2 3 5 13
  • 7. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 7 當節點有加權値,且毎個加權値不盡相同時,則當樹愈平 衡時,不見得其外部路徑長度就愈小!! 問題: 若有三個 (n個) 內部節點,什麼情況它們的Weighted E.P.L.是最 小的?
  • 8. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 8 Def: 給予(n+1)個外部節點加權値,在 Cn 2n/(n+1)顆樹中,具有最小的 W.E.P.L.稱之。 主要應用: (n+1)個訊息傳輸,其平均解碼時間最小 (或:編碼位元長度最小) Min. W.E.P.L. (最小加權外部路徑長度)
  • 9. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 9 求Min. W.E.P.L.的方法有兩種: Brute Force法 (暴力法) Huffman Algorithm (霍夫曼演算法)
  • 10. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 10 Huffman Algorithm (霍夫曼演算法) 令W為外部節點加權値的集合,Huffman Algo.的執行歩 驟如下: 自W中取出2個具最小加權値的節點 替這2個節點建立Extended B.T. 再將此2個節點的加權値和加入W中 Repeat前三歩直到W中只剩一個加權値為止
  • 11. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 11 範例:有6個外部節點,其加權値分別為:2, 3, 5, 7, 9, 13。求Min. W.E.P.L.。 Ans: W = {2, 3, 5, 7, 9, 13} 2 3 5  (數値放左leaf或放右leaf對於找min. W.E.P.L.無影響, 但習慣上將小的放在左邊)  W = {5, 5, 7, 9, 13}  W = {10, 7, 9, 13} 1 0 2 3 5  5  1 0 2 3 5 5 7 9 1 6  W = {10, 16, 13}  W = {23, 16}  1 0 2 3 5 5 7 9 1 6 13 2 3  W = {39} 3 9  7 9 1 6 1 0 2 3 5 5 13 2 3 • Huffman Tree • Min. W.E.P.L. = 93 (2×7+2×9+2×13+3×5+4×2+4×3)
  • 12. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 12 Huffman Algo.的精神: 若希望求得加權路徑長度總和為最小,則 “加權値愈重的節點, 離Root要愈近” !! 建樹時是從底層建起;在建樹的過程中,皆是取當時在W集合中 權重値最輕的兩個節點。
  • 13. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 13 【應用 1】有6個Message要傳輸,其出現頻率如下: 今希望平均解碼時間最小,則: 解碼時間最短的Encoding/Decoding Tree為何? 各Message之編碼內容為何? 平均最小編碼位元長度為何? Ans: Message:外部節點;出現頻率:加權値
  • 14. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 14 解碼時間最短的Encoding/Decoding Tree : 將出現頻率通分後,以分子當加權値建立Huffman Tree Encoding/Decoding Tree (都是同一顆Tree): 左分支:0 右分支:1 3 9 7 9 1 6 1 0 2 3 5 5 13 2 3 0 0 0 0 0 1 1 1 1 1 M4 M5 M1 M2 M3 M6
  • 15. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 15 各Message之編碼內容: (由Root開始走) M1 = 1000 M2 = 1001 M3 = 101 M4 = 00 M5 = 01 M6 = 11 Message Decoding Time = Message Bit數 = Root到外部節點的路徑長 度 經常出現的訊息,Bit數要愈少;即路徑長度要愈短。 3 9 7 9 1 6 1 0 2 3 5 5 13 2 3 0 0 0 0 0 1 1 1 1 1 M4 M5 M1 M2 M3 M6
  • 16. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 16 平均最小編碼位元長度: ∑(編碼位元數×出現頻率) 3
  • 17. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 17 【應用 2】有一字串AABBBACCBADDECBA,求Encoding/ Decoding Tree為何? Ans: 毎個字元的出現頻率: A5次 B5次 C3次 D2次 E1次 1 6 3 6 3 5 5 1 0 0 0 0 0 1 1 1 1 C D A B 1 2 E
  • 18. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 18 ▓ Binary Search Tree 的效益 當B.S.T.建立之後,可以用來搜尋資料。因此,由平均比較 次數來決定其效益。 若平均比較次數愈低,則效益愈高 例 1: 成功搜尋的平均比較次數: (1+2+2+3+3)/5 = 11/5 = 2.2 結論:不考慮加權値或加權値皆相同的情形下 愈平衡的Binary Search Tree,其平均比較次數愈小,Big-O≈ O(log n)。 愈偏斜的Binary Search Tree,其平均比較次數愈大,Big-O ≈ O(n)。 1 0 5 2 0 8 1 5 1 2 2 3 3
  • 19. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 19 在靜態的環境下,一般Binary Search Tree的建構方法可 以有較充裕的時間將欲搜尋的所有資料建構成較平衡的 Binary Search Tree,以提升後續資料搜尋時的效率。 然而,若是在動態的環境下,資料可以隨時Insert / Delete。 此時,一般Binary Search Tree的建構方法會産生Skewed Binary Tree,導致資料搜尋的效率變差 (即:O(n))。 需要AVL Tree,面對動態資料,Tree的高度均維持在高度 平衡的情況。
  • 20. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 20 ▓ AVL Tree (高度平衡樹) Def: 為一個Height Balance的Binary Search Tree,可以為 空,若不為空,則滿足: |hL - hR|  1,其中 hL 與 hR 為左、右子樹的高度。 左右子樹亦是AVL Tree (AVL Tree也有遞迴的特性) (前題:不考慮加權値或加權値皆相同的情形下) 範例 1:下列Binary Search Tree何著為AVL Tree? +1 +1 -1 -1 0 0 0 +2 -1 +1 0 0 0 () ()
  • 21. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 21 範例 2:下列Binary Tree是否為AVL Tree? 8 > 5,違反了Binary Search Tree的條件,不是AVL Tree Balance Factor (平衡因子) of a node: Def: B.F.= hL - hR 在AVL Tree中,所有節點的B.F.只有三種値: -1,0,+1 () 26 5 70 8 2 50 80 
  • 22. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 22 AVL Tree 不平衡的情況 建構AVL Tree的過程中,當插入一個新的節點時,可能會 造成以下四種不平衡的情況: LL不平衡 LR不平衡 RL不平衡 RR不平衡 L L +2 +1 0  離新進節點最近 的不平衡點 因為新進節點是在此最近不平衡點的LL方向, 故稱為LL不平衡 (只看兩階) 0 +1 +2 L R R L 0 +1 -2 R R 0 -1 -2
  • 23. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 23 以下AVL Tree插入新節點後,會産生何種不平衡? 0 0 0 0 +1 -1 -1 -1 -1 +2 LR不平衡 (只看兩階) 0 +1 -2 RL不平衡
  • 24. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 24 原則: 由於四種不平衡情況會牽渉到三個節點,且三個節點內存放的値 會有小、中、大三種不同的資料。故調整時,三個節點的中間値往 上拉,小的値放左,大的値放右。 調整後,若産生沒有父親的子樹,則以二元搜尋樹插入資料的方 式來判斷該放哪裡。 AVL Tree 不平衡情況的調整方式
  • 25. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 25 範例 1:若有以下四種不平衡的情況,該如何調整: LL不平衡 LR不平衡 RL不平衡 RR不平衡 B A C L L 大 中 小 C B A 中 小 大 L R A C B R L 中 大 小 A B C R R 大 中 小 B A C C B A C A B B A C
  • 26. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 26 範例 2:若插入資料時發生以下二種情況,該如何調整: Case 1: Case 2 0 0 0 -1 +1 +2 (LR不平衡) A B AR BL C 大 小 中 CL A B AR BL C CL A B C 0 -1 -2 (RR不平衡) A B C
  • 27. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 27 範例 3:給予下列數字,請建立AVL Tree: 5, 26, 77, 2, 8, 10, 19, 12 Ans: 5 26 5 26 5 77 26 5 77 (RR不平衡) 26 5 77 26 5 77 2 26 5 77 2 8 10 26 5 77 2 8 +2 -1 -1 0 0 0 26 5 8 (LR不平衡) 10 26 5 77 2 8
  • 28. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 28 範例 3:給予下列數字,請建立AVL Tree: 5, 26, 77, 2, 8, 10, 19, 12 Ans: (續) 8 5 26 77 2 12 10 19 10 26 5 77 2 8 19 10 26 5 77 2 8 19 12 0 -1 -2 10 19 12 (RL不平衡)
  • 29. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 29 範例 4:下列英文月份的AVL Tree,若插入 “Feb” 之結果為何? (順序: A<B<C<…<Z) Ans:
  • 30. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 30 定理:形成高度h的AVL Tree,所須要的最少節點個數為:Fh+2-1 (F:費 式數) 範例 1:形成高度為3的AVL Tree, 所需的最少節點個數為 4 所需的最多節點個數為 7 Fh+2-1 = F3+2-1= 4 23-1=7 範例 2:一個AVL Tree有15個節點,則: 最大高度為 5 最小高度為 4 n … 7 8 Fn … 13 21 h=5 h=6     4 1) (15 log 1) (n log 2 2     (用最少的點撐出最大的高度) (完整二元樹)
  • 31. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 31 如: 如何調整成AVL Tree? h h-1 h BL A B C CL CR AR +1 0 0 h h-1 h h +2 -1 -1 BL A B C CL CR AR BL A B C CL CR AR L R CL CR BL A B C AR LR調整 +1 0 0
  • 32. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 32 ▓ m-way Search Tree 主要用於外部搜尋 (External Search) 先前的樹状搜尋方法皆為內部搜尋 (Internal Search) Internal Search: Def: 資料量少,可以一次全部置於Memory中進行search之工作 External Search: Def: 資料量大,無法一次全置於Memory中,須藉助輔助儲存體 (E.g. Disk),進行分段search之工作 Tree Degree = m,且m>2 為何不用二元樹的結構? 因為外部搜尋的資料量頗大,若還是以二元樹的結構存放資料,則 樹的高度將很高,資料搜尋將頗為費時。
  • 33. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 33 目的:提升External Search 的效益 要提升External Search的效益,則需降低Disk I/O的次數 要有效降低Disk I/O的次數,則需要降低Search Tree的高度 要能夠降低Search Tree的高度,則需增大Tree Degree: m 範例:找 “15” 這筆資料 Disk 10 40 15 5 26 30 28 (B.S.T. 的 Degree最大為2時) : Disk out : Disk in Block 26 10 15 要3次的Disk I/O 改進 (Degree最大為4時) Disk 5, 10, 20 15, 16 要2次的Disk I/O 5, 10, 20 2, 3 8 15, 16 30, 40, 50
  • 34. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 34 若m為無窮大時,雖然高度只有一層,但因為Data量太大, 無法一次放到Memory中。∴m以Memory Size為限。 若所有資料可以一次全放到記憶體中,則為Internal Search的議 題,不需用到外部搜尋的技術。
  • 35. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 35 Def: m-way Search Tree T是一個所有節點的分支度≤m的樹。T可以 是空樹。若T不為空樹時,則具有下列性質: 節點結構為:n, A0, (k1, A1), (k2, A2), …, (kn, An) 鍵値個數 n ≤ m-1 ki: 鍵値 (資料) Ai: 指標,指向存放大小介於 ki 與 ki+1 之間的資料之節點所在 Ex: 節點中的鍵値 (資料) 是由小至大排序的 子樹同樣是m-way Search Tree (遞迴定義) 子樹Ai內的資料均小於鍵値ki+1;子樹An內的資料均大於鍵値kn。 k2, kn … k3, k1, n A0 A1 A2 A3 An 5, 10, 20 2, 3 8 15, 16 30, 40, 50
  • 36. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 36 m-way Search Tree之相關定理 定理:高度為h的m-way Search Tree: 最多的Node個數 = ? 最多的Key (Data) 個數 = ? Level 毎層最多的Node個數 1 m0 = 1 2 m 3 m2 h mh-1 … … … … … ∴高度為h的m-way Search Tree最多的Node個數 = m0 + m1 + m2 + … + mh-1 = (mh - 1)/(m-1) ∴高度為h的m-way Search Tree最多的Data個數 = (m-1) × (mh - 1)/(m-1) = (mh - 1)
  • 37. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 37 m-way Search Tree雖利用增大Tree的Degree來降低 Search Tree的高度,以減少Disk I/O 的次數,但若此Tree不 平衡,也可能會變相地增加Disk I/O的次數。 因此發展出B-tree of order m。
  • 38. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 38 ▓ B-Tree Def: 是一個Balanced m-way search tree。可以為空,若不 為空,則滿足: Root至少有2個Childs 除了Root及Failure Node之外,其餘Node的分支度介於m/2及m之 間 所有的Failure Node皆位於同一Level。(即:所有葉子節點位於同一 Level)
  • 39. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 39 範例:有一B-tree of order m如下: 若m = 3 (即:B-tree of order 3) Root:2 ≤ degree ≤ 3; 非Root與非Leaf的節點: m/2 ≤degree≤m  2 ≤ degree ≤ 3 B-tree of order 3又稱 2-3 tree 若m = 4 (即:B-tree of order 4) Root:2 ≤ degree ≤ 4; 非Root與非Leaf的節點: m/2 ≤degree≤m  2 ≤ degree ≤ 4 B-tree of order 4又稱 2-3-4 tree 若m = 5 (即:B-tree of order 5) Root:2 ≤ degree ≤ 5; 非Root與非Leaf的節點: m/2 ≤degree≤m  3 ≤ degree ≤ 5 Failure Node
  • 40. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 40 定理:高度為h的B-Tree: 最多的Node個數 = ? 最多的Key (Data) 個數 = ? B-Tree of order m之相關定理 由於B-Tree中,毎一個節點的Degree最大皆可到m (m可自定) 所以其結果等同於m-way Search Tree的分析結果!!!
  • 41. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 41 B-Tree之Insert動作 (假設要插入資料x) Step:  先做Search,以找到適當的插入節點,將x放入該節點中  檢査該節點有無Overflow • 無Overflow (key數m-1),則OK並跳出。 • 有Overflow (key數 m)則: 作 “Split” 處理 針對父點,goto  //即:作完Split後,針對父點檢査是否有Overflow 如何做 “Split” 處理 將第 m/2 個鍵値上拉到父點,其餘鍵値分成左、右兩個子點。 K1, k2, …, , km k m/2 父點 …, km/2 , … K1, k2, …, k m/2 -1 父點 k m/2 +1,…, km
  • 42. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 42 範例:有一B-tree of order 3如下,若連續Insert “2”, “130”, “8”會得 到什麼結果。 Ans: Insert “2” 無Overflow,OK. Insert “130” 有Overflow 6 0 10, 30 90 5 20 35 80 100, 120 60 10, 30 90 2, 5 20 35 80 100, 120 60 10, 30 90 2, 5 2 0 3 5 80 100, 120, 130 60 10, 30 90, 120 2, 5 20 35 80 10 0 13 0 將第 3/2 個 鍵値上拉 父點無Overflow
  • 43. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 43 Insert “8” 有Overflow 60 10, 30 90, 120 2, 5, 8 20 35 80 10 0 13 0 父點有Overflow,將 第 3/2 個鍵値上拉 將第 3/2 個 鍵値上拉 60 5, 10, 30 90, 120 2 20 35 80 10 0 13 0 8 3 0 10,60 90, 120 2 20 35 80 10 0 13 0 8 5 父點無Overflow
  • 44. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 44 練習範例 給予1, 2, 3, 4, 5, 6, 7, 8,請建立2-3 tree (B-tree of order 3) Ans: 4 2 6 1 3 5 7, 8
  • 45. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 45 B-Tree之Delete動作 (假設要刪除資料x) Step: 先做Search,以找到x所在之節點 分成下列兩個Case來處理: Case 1: x位於Leaf Node Case 2: x位於Non-leaf Node
  • 46. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 46 Case 1: x位於Leaf Node 需進行下列歩驟:  Delete x  檢査該Node有無Underflow 沒有Underflow (即:鍵値數目  m/2 -1) 則OK,結束工作。 有Underflow (即:鍵値數目 < m/2 -1),則: 先嘗試作 “Rotation”,若完成工作則結束。 若無法做“Rotation”,則作 “Combination”。Combination做完,針對父點, goto 。  B-tree of order m中,除了樹根與失 敗節點之外,其它的Internal Node的 degree是介於m/2 ~m之間,毎個 Internal Node內的鍵值最多有m-1個 鍵値,最少有m/2 -1個鍵値!!
  • 47. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 47 … … Rotation的處理,可分成: 右旋:  將右兄弟的最小鍵値傳至父點,  將原父點的最大鍵値傳給Overflow的節點做為其最大鍵値 左旋:  將左兄弟的最大鍵値傳至父點,  將原父點的最小鍵値傳給Overflow的節點做為其最小鍵値 這些Rotation的結果可保有Binary Search Tree的鍵値順序,即:左子 樹(小) - 樹根(中) - 右子樹(大) ◇ ◆ ● □ Underflow   … … ◇ □ ◆ ● 鍵値數> m/2 -1 鍵値數> m/2 -1   … … ◇ □ ◆ ● ◇:父節點的最大鍵値 ●:左兄弟的最大鍵値 □:右兄弟的最小鍵値 ◆:父節點的最小鍵値
  • 48. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 48 … … Combination的處理,可分成: 右合併:  將父點右邊的最大鍵値傳給Overflow的節點做為其最大鍵値  將Overflow的節點與其有相同鍵値來源之兄弟合併成一個節點 左合併:  將父點左邊的最小鍵値傳給Overflow的節點做為其最小鍵値,  將Overflow的節點與其有相同鍵値來源之兄弟合併成一個節點 這些Combination的結果可保有Binary Search Tree的鍵値順序,即:左 子樹(小) - 樹根(中) - 右子樹(大) ◇ ◆ ● □ Underflow   … … ◇□ ◆ ● 鍵値數= m/2 -1 鍵値數= m/2 -1   … … ◇ □ ◆ ● ◇:父節點的最大鍵値 ●:左兄弟的最大鍵値 □:右兄弟的最小鍵値 ◆:父節點的最小鍵値
  • 49. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 49 範例 1:有一B-tree of order 3如下,若連續Delete “5”, “65”, “50”會得 到什麼結果。 Ans: (p.s.: 2  degree  3  1  鍵値數量  2) Delete “5” 無Underflow,OK. Delete “65” 有Underflow 6 0 30, 40 80 5, 10 35 50 65 100, 120 6 0 30, 40 80 1 0 35 50 65 100, 120 6 0 30, 40 80 1 0 35 50 100, 120 6 0 30, 40 10 0 1 0 35 50 80 12 0 右旋
  • 50. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 50 Delete “50” 有Underflow 6 0 35, 40 10 0 1 0 30 80 12 0 右合併 6 0 30, 40 10 0 1 0 35 80 12 0
  • 51. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 51 範例 2:有一B-tree of order 3如下,若連續Delete “80”, “10”會得到什 麼結果。 Ans: (p.s.: 2  degree  3  1  鍵値數量  2) Delete “80” 有Underflow. 父點有Underflow 6 0 20, 40 100 1 0 30 50 80 12 0 6 0 20, 40 100 1 0 30 50 12 0 左(右)合併 6 0 20, 40 1 0 30 50 100, 120 ~~~~~~~~~~~~~~~~~~~~~~~~~ 左旋 4 0 2 0 60 1 0 30 50 100, 120
  • 52. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 52 Delete “10” 有Underflow. 父點有Underflow 父點又有Underflow 4 0 20, 30 60 50 100, 120 ~~~~~~~~~~~~~~~~~~~~~~~~~ 合併 4 0 2 0 60 30 50 100, 120 合併 20, 30 40, 60 50 100, 120 ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ (若Root為Underflow,則消去) 20, 30 40, 60 50 100, 120
  • 53. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 53 Case 2: x位於Non-leaf Node 需進行下列歩驟:  (a). 以x的右子樹中之最小鍵値取代x;或是 (b). 以x的左子樹中之最大鍵値取代x  返回Case 1作後續處理。 範例 1:有一B-tree of order 3如下,若連續Delete “60”, “100”會得到 什麼結果。 Ans: (p.s.: 2  degree  3  1  鍵値數量  2) 6 0 80, 100 30 7 0 90 12 0 40 5, 10
  • 54. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 54 Delete “60” 要選擇右子樹最小 or 左子樹最大的鍵 値來取代被刪除的資料,以最方便的為 優先!! Rotation > Combination 返回Case 1做後續處理 80, 100 30 7 0 90 12 0 40 5, 10 4 0 80, 100 30 7 0 90 12 0 5, 10 4 0 80, 100 10 7 0 90 12 0 30 5 左旋
  • 55. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 55 Delete “100” 要選擇右子樹最小 or 左子樹最大的鍵 値來取代被刪除的資料,以最方便的為 優先!! Rotation > Combination 返回Case 1做後續處理 4 0 80, 10 7 0 90 12 0 30 5 4 0 80, 90 10 7 0 12 0 30 5 右合併 4 0 80 10 7 0 90, 120 30 5 4 0 90 10 12 0 70, 80 30 5 (若使用左合併)
  • 56. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 56 ▓ B+ Tree Def: 是B Tree之變形,也是用於External Search/Sort上。 可以支援ISAM (Index Sequential Access Method)之實施,常用於 DBMS內層製作。 以Order-3為例: 7, 11 2, 4 9 14. 20 1, 2 4 7 9 11 14 18, 20 21, 23 Index Layer Data Blocks Layer
  • 57. 國立聯合大學 資訊管理學系 資料結構課程 (陳士杰) 57 B+ tree分為兩個Layer Index Layer: 採B tree結構。僅用來存放索引,以幫助User正確地找到所需之Data Block。 Data Blocks Layer: 用以存放Data,且Blocks之間以Link List串連。 Data Block存放資料時,通常不會受到B tree的Order限制。因此,每 個Data Block最多要塞多少筆Data可自訂。當然也可以和Index Layer 內的節點一致。 何謂Index Sequential Access? 透過Index找到對應的起始Data Block之後,即可循序讀取其它資 料。 Ex: 找出大於等於7~小於20的資料。