Chapter 12 - Multiway Trees
-
Upload
nguyen-thanh-linh -
Category
Documents
-
view
245 -
download
0
Transcript of Chapter 12 - Multiway Trees
-
8/6/2019 Chapter 12 - Multiway Trees
1/44
Chapter 12
Lexicographic Search Trees: Tries
Multiway Trees
B-Tree, B*-Tree, B+-Tree
Red-Black Trees (BST and B-Tree)
2-d Tree, k-d Tree
1
-
8/6/2019 Chapter 12 - Multiway Trees
2/44
Basic Concepts
2
-
8/6/2019 Chapter 12 - Multiway Trees
3/44
-
8/6/2019 Chapter 12 - Multiway Trees
4/44
Trees
4
-
8/6/2019 Chapter 12 - Multiway Trees
5/44
5
-
8/6/2019 Chapter 12 - Multiway Trees
6/44
Trees and Orchard
6
-
8/6/2019 Chapter 12 - Multiway Trees
7/447
-
8/6/2019 Chapter 12 - Multiway Trees
8/44
Lexicographic Search Tree
8
-
8/6/2019 Chapter 12 - Multiway Trees
9/44
Multiway Trees
9
-
8/6/2019 Chapter 12 - Multiway Trees
10/4410
-
8/6/2019 Chapter 12 - Multiway Trees
11/4411
-
8/6/2019 Chapter 12 - Multiway Trees
12/44
M-Way Search Tree
12
-
8/6/2019 Chapter 12 - Multiway Trees
13/4413
-
8/6/2019 Chapter 12 - Multiway Trees
14/44
14
-
8/6/2019 Chapter 12 - Multiway Trees
15/44
15
-
8/6/2019 Chapter 12 - Multiway Trees
16/44
B-Tree
16
-
8/6/2019 Chapter 12 - Multiway Trees
17/44
17
-
8/6/2019 Chapter 12 - Multiway Trees
18/44
B-Tree Insertion
18
-
8/6/2019 Chapter 12 - Multiway Trees
19/44
B-Tree Insertion
19
-
8/6/2019 Chapter 12 - Multiway Trees
20/44
B-Tree
B_Node
count
data
branch
End B_Node
B_Tree
root
End B_Tree
20
-
8/6/2019 Chapter 12 - Multiway Trees
21/44
Methods and Functions
SearchTree recursiveSearchTree(calls)
SearchNode
Insert recursiveInsert
splitNode
push_in
-
8/6/2019 Chapter 12 - Multiway Trees
22/44
B-Tree SeachTree
22
SearchTree (reftarget )
1. return recursiveSearchTree(root, target)
End SearchTree
-
8/6/2019 Chapter 12 - Multiway Trees
23/44
B-Tree SeachTree
23
recursiveSearchTree (val subroot ,
reftarget )
1. result = not_present
2. if(subroot is not NULL)
1. result = SearhNode (subroot, target, position)2. if(result = not_present)
1. result = recursiveSearchTree ( subroot->branchposition, target)
3. else
1. target = subroot->dataposition
3. return result
End recursiveSearchTree
-
8/6/2019 Chapter 12 - Multiway Trees
24/44
B-Tree SeachTree
24
SearchNode (val subroot ,
val target ,
refposition )
1. position = 02. loop (position < subroot->count) AND (target>subroot->dataposition)
1. position = position + 1 // Sequential Search
3. if(position < subroot->count) AND (target = subroot->dataposition)
1. return success
4. else
1. return not_present
End SearchNode
-
8/6/2019 Chapter 12 - Multiway Trees
25/44
Methods and Functions
SearchTree recursiveSearchTree(calls)
SearchNode
Insert recursiveInsert
splitNode
push_in
-
8/6/2019 Chapter 12 - Multiway Trees
26/44
B-Tree Insertion
26
Insert (val newData )
(local variable: median , rightBranch ,newroot , result )
Return duplicate_error, success
1. result = recursiveInsert (root, newData, median, rightBranch)
2. if (result = overflow)1. Allocate newroot
2. newroot->count = 1
3. newroot->data0 = median
4. newroot->branch0 = root5. newroot->branch1 = rightBranch
6. root = newroot
7. result = success
3. return resultEnd Insert
-
8/6/2019 Chapter 12 - Multiway Trees
27/44
Split Node
27
-
8/6/2019 Chapter 12 - Multiway Trees
28/44
B-Tree Insertion
28
recursiveInsert (val subroot ,
val newData ,
refmedian ,
refrightBranch )
Return overflow, duplicate_error, success
1. if(subroot = NULL)
1. median = newData
2. rightbranch = NULL
3. result = overflow
2. else
recursiveInsert (val subroot
-
8/6/2019 Chapter 12 - Multiway Trees
29/44
29
recursiveInsert (val subroot ,
val newData ,
refmedian ,
refrightBranch ) (cont.)
2. // else, local variables: extraEntry, extraBranch
1. if(SearchNode (subroot, newData, position) = success)
1. result = duplicate_error
2. else
1. result = recursiveInsert (subroot->branchposition, newData,extraEntry, extraBranch)
2. if(result = overflow)
1. if(subroot->count < order-1)
1. result = success
2. push_in (subroot, extraEntry, extraBranch, position)
2. else
1. splitNode (subroot, extraEntry, extraBranch, position,
rightBrach, median)
3. return result
End recursiveInsert
-
8/6/2019 Chapter 12 - Multiway Trees
30/44
Push In
30
-
8/6/2019 Chapter 12 - Multiway Trees
31/44
B-Tree
31
push_in (val subroot ,
val entry ,val rightBranch ,
val position )
1. i = subroot->count
2. loop ( i > position)
1. subroot->datai = subroot->datai - 12. subroot->branchi + 1 = subroot->branchi3. i = i + 1
3. subroot->data position= entry
4. subroot->branch position + 1= rightBranch
5. subroot->count = -subroot->count + 1
End push_in
-
8/6/2019 Chapter 12 - Multiway Trees
32/44
B-Tree
32
splitNode (val subroot ,
val extraEntry ,val extraBranch ,
val position ,
refrightHalf,
refmedian )
-
8/6/2019 Chapter 12 - Multiway Trees
33/44
B-Tree Insertion
33
-
8/6/2019 Chapter 12 - Multiway Trees
34/44
B-Tree Insertion
34
-
8/6/2019 Chapter 12 - Multiway Trees
35/44
35
-
8/6/2019 Chapter 12 - Multiway Trees
36/44
B-Tree Deletion
36
-
8/6/2019 Chapter 12 - Multiway Trees
37/44
B-Tree Deletion
37
-
8/6/2019 Chapter 12 - Multiway Trees
38/44
B-Tree Deletion
38
-
8/6/2019 Chapter 12 - Multiway Trees
39/44
39
-
8/6/2019 Chapter 12 - Multiway Trees
40/44
40
-
8/6/2019 Chapter 12 - Multiway Trees
41/44
41
-
8/6/2019 Chapter 12 - Multiway Trees
42/44
42
-
8/6/2019 Chapter 12 - Multiway Trees
43/44
43
k d T
-
8/6/2019 Chapter 12 - Multiway Trees
44/44
k-d Trees
2-d Tree
k-d Tree