Notes on 2-3 Trees

advertisement
B-Trees with Minimum=1
2-3 Trees
Data Structures and Algorithms
1
Delete (T, X, success)
/*Delete from tree T the item with key X. The operation
fails if no such item. The flag success indicates whether the
operation succeeds*/
//Attempt to locate I with search key X
IF I is present THEN
swap item I into leaf L which contains the inorder
successor of I
/* deletion begins from leaf L */
IF L has no items THEN Fix (L)
success := true
ELSE
success := false
Data Structures and Algorithms
2
Fix (N)
/* N is a node with no item. Note, if N is an internal node,
then it has one child. */
Let P be the parent of N. If N is the root, delete it and return.
IF some sibling of N has two items THEN
distribute items among N, the sibling, and P
IF N is internal THEN
move the appropriate child from the sibling to N
ELSE
/* must merge the node */
Choose an adjacent sibling S of N
Bring the appropriate item down from P into S
If N is internal THEN
Move N’s child to S
Delete node N
If P is now without an item THEN Fix (P)
3
Insert (T, newitem)
/* Insert newitem into tree T */
Let X be the search key of new item
Locate the leaf L in which X belongs
Add newitem to L
IF L now has three items THEN
Split (L)
Data Structures and Algorithms
4
Split (N)
/* Split node N which contains 3 items. Note that
if N is internal then it has 4 children */
Let P be the parent of N
/* if N is the root, then create a new node P */
Replace node N by two nodes, N1 and N2
Give N1 the item in N with the smallest search key value
Give N2 the item in N with the largest search key value
If N is an internal node THEN
N1 becomes the parent of N’s two leftmost children
N2 becomes the parent of N’s two rightmost children
Send up to P the item in N with the middle search key value
If P now has 3 items THEN
Split (P)
5
Insertion
Given
50
30
10,20
70,90
40 60 80
Insertions
are always
at a leaf
100
Insert 39
50
30
10,20
70,90
39,40 60 80
100
Data Structures and Algorithms
6
Insert 38
50
30
10,20
70,90
38,39,40 60 80
100
illegal
50
30,39
10,20
38 40 60
70,90
80
Data Structures and Algorithms
100
7
Insert 37
50
30,39
70,90
10,20 37,38 40 60
80
100
Data Structures and Algorithms
When the height
grows it does so
from the top.
8
Insert 36
50
30,39
70,90
10,20 36,37,38 40 60
80
100
illegal
37,50
50
illegal
30,37,39
10,20
36 38 40
Data Structures and Algorithms
30
10,20
39
36 38 40
9
Insert 35, 34, 33
37,50
37,50
30
30
10,20 35,36
10,20 34,35,36
illegal
37,50
h
30,35
10,20 34 36
ALL leaves are at the same level
Data Structures and Algorithms
10
37,50
h
30,35
39
10,20 33,34 36
38
70,90
40
Data Structures and Algorithms
60
80
100
11
Deletion
Given
50
30
70,90
10,20 40 60 80 100
Delete 50
60
60
30
10,20 40
30
70,90
80 100
90
10,20 40 70,80 100
Data Structures and Algorithms
12
Delete 100
60
30
60
90
10,20 40 70,80
30
10,20 40 70
Data Structures and Algorithms
80
90
13
Delete 60
70
30
10,20 40
N
70
30
80
10,20 40
90
80,90
30,70
30
10,20 40
70
10,20 40 80,90
80,90
Data Structures and Algorithms
14
Delete 70
30,80
10,20
40
90
Delete 80
30,90
10,20
40
30
10,20
Data Structures and Algorithms
40,90
15
Given
50
30
10,20
70,90
40
Delete 70
60
80
100
You always begin deletion from a
leaf so swap with inorder successor.
50
30
10,20
50
80,90
80,90
40 60 70 100
illegal
Data Structures and Algorithms
60
100
16
50
90
60,80
100
50
30
10,20 40
90
60,80
100
Data Structures and Algorithms
17
Delete 100
50
90
60,80
This leaf can spare a value
50
50
30
80
60
80
10,20 40 60 90
90
Data Structures and Algorithms
18
Delete 80
50
50
30
30
90
10,20 40 60
Can‘t spare a value
90
10,20 40 60
80
50
30,50
30
10,20 40 60,90
Data Structures and Algorithms
10,20
40 60,90
19
Download