© 2004 Goodrich, Tamassia 1 2-3-4 Trees 9 10 14 2 5 7.
-
Upload
avice-preston -
Category
Documents
-
view
228 -
download
0
Transcript of © 2004 Goodrich, Tamassia 1 2-3-4 Trees 9 10 14 2 5 7.
© 2004 Goodrich, Tamassia 1
2-3-4 Trees
9
10 142 5 7
2
Multi-Way Search TreeA multi-way search tree is an ordered tree such that
Each internal node has at least two children and stores d1 key-element items (ki, oi), where d is the number of children
For a node with children v1 v2 … vd storing keys k1 k2 … kd1
keys in the subtree of v1 are less than k1
keys in the subtree of vi are between ki1 and ki (i = 2, …, d1) keys in the subtree of vd are greater than kd1
The leaves store no items and serve as placeholders
11 24
2 6 8 15
30
27 32
3
Multi-Way Inorder Traversal
We can extend the notion of inorder traversal from binary trees to multi-way search treesNamely, we visit item (ki, oi) of node v between the recursive traversals of the subtrees of v rooted at children vi and vi1
An inorder traversal of a multi-way search tree visits the keys in increasing order
11 24
2 6 8 15
30
27 32
1 3 5 7 9 11 13 19
15 17
2 4 6 14 18
8 12
10
16
4
Multi-Way SearchingSimilar to search in a binary search treeA each internal node with children v1 v2 … vd and keys k1 k2 … kd1
k ki (i = 1, …, d1): the search terminates successfully k k1: we continue the search in child v1
ki1 k ki (i = 2, …, d1): we continue the search in child vi
k kd1: we continue the search in child vd
Reaching an external node terminates the search unsuccessfullyExample: search for 30
11 24
2 6 8 15
30
27 32
5
2-3-4 TreesA 2-3-4 tree (also known as 2-4 tree) is a multi-way search with the following properties
Node-Size Property: every internal node has at least 2 and at most 4 children
Depth Property: all the external nodes have the same depth
10 15 24
2 8 12 27 3218
Perfectly balanced! 4-node3-key node
3-node2-key node
6
Height of a 2-3-4 TreeTheorem: A 2-3-4 tree storing n items has height O(log n)Proof:
Let h be the height of a 2-3-4 tree with n items Since there are at least 2i and at most 4i items at depth i 0, … ,
h 1 and no items at depth h, we have
Searching in a 2-3-4 tree with n items takes O(log n) time
1
2
2h1
0
items0
1
h1
h
depth
)(logis1log13log
3/1412444222
24
110110
nOhnhn
nn hhhh
Multi-way Search Trees: Find
7
Find12
Find24
Update of 2-3-4 Trees
Bottom-up approach (in the text book) Find, insert, delete: worse-case
O(logn) time
Top-down approach Same time complexity with a smaller
constant factor Recording by Jonathan Shewchuk
8
9
Insert: Bottom-UpWe insert a new item (k, o) at the parent v of the leaf reached by searching for k
We preserve the depth property but We may cause an overflow (i.e., node v may become a 5-node)
Example: inserting key 30 causes an overflow
27 32 35
10 15 24
2 8 12 18
10 15 24
2 8 12 27 30 32 3518
v
v
10
Overflow and SplitWe handle an overflow at a 5-node v with a split operation:
let v1 … v5 be the children of v and k1 … k4 be the keys of v node v is replaced nodes v' and v"
v' is a 3-node with keys k1 k2 and children v1 v2 v3
v" is a 2-node with key k4 and children v4 v5
key k3 is inserted into the parent u of v (a new root may be created)
The overflow may propagate to the parent node u
15 24
12 27 30 32 3518v
u
v1 v2 v3 v4 v5
15 24 32
12 27 3018v'
u
v1 v2 v3 v4 v5
35v"
More Insert Example
11
Cascading Splits
12
Examples of Bottom-Up Insert
Insert 5, 6, 7, 4, 3, 2, 1, 8, 9, 10 into a 2-3 tree. Walkthrough
Insert 9, 7, 6, 1, 3, 2, 5, 4, 8, 10
13
More Examples
Animation of 2-3 trees OpenDSA
14
Insert: Top-Down
Steps Walks down tree in search of k. Whenever a 3-key node is
encountered, split it by placing the middle key in the parent node. (Note that the parent has at most 2 keys, so it has room for the third.)
15
7
1,3,4 9
3, 7
1 94
Split
3-key
Example of Top-Down Insert
16
20, 40, 50
14 70, 7932 43
1018
25
33
42
47
57, 62, 6674
81
Insert 60
20
14 62, 70, 7932 43
1018
25
33
42
47
5774
81
50
40
66
Insert 60 here!
Observations on Insert
Why we split 3-key nodes To make sure there is room for new key
in leaf To make room for any key that’s kicked
upstairs
Sometimes insertion increases depth of tree by creating a new root, which is the only way a 2-3-4 tree can increase in height.
17
18
Analysis of Bottom-Up Insert
Algorithm put(k, o)
1. We search for key k to locate the insertion node v
2. We add the new entry (k, o) at node v
3. while overflow(v)
if isRoot(v)
create a new empty root above v
v split(v)
Let T be a 2-3-4 tree with n items
Tree T has O(log n) height
Step 1 takes O(log n) time because we visit O(log n) nodes
Step 2 takes O(1) time Step 3 takes O(log n)
time because each split takes O(1) time and we perform O(log n) splits
Thus, an insertion in a (2,4) tree takes O(log n) time
19
Bottom-Up DeletionWe reduce deletion of an entry to the case where the item is at the node with leaf childrenOtherwise, we replace the entry with its inorder successor (or, equivalently, with its inorder predecessor) and delete the latter entryExample: to delete key 24, we replace it with 27 (inorder successor)
27 32 35
10 15 24
2 8 12 18
32 35
10 15 27
2 8 12 18
20
Underflow and FusionDeleting an entry from a node v may cause an underflow, where node v becomes a 1-node with one child and no keysTo handle an underflow at node v with parent u, we consider two casesCase 1: the adjacent siblings of v are 2-nodes
Fusion operation: we merge v with an adjacent sibling w and move an entry from u to the merged node v'
After a fusion, the underflow may propagate to the parent u
9 14
2 5 7 10
u
v
9
10 14
u
v'w2 5 7
Single key
Many fusions possible
21
Underflow and TransferTo handle an underflow at node v with parent u, we consider two casesCase 2: an adjacent sibling w of v is a 3-node or a 4-node
Transfer operation:1. we move a child of w to v 2. we move an item from u to v3. we move an item from w to u
After a transfer, no underflow occurs
4 9
6 82
u
vw
4 8
62 9
u
vw
Only one transferduring deletion
More Delete Examples
(2,4) Trees 22
Propagating Fusions
23
Delete: Top Down
Steps for deleting key k Find key k
If it’s in leaf, remove it It it’s internal node, replace it with entry
with next higher key (always a leaf)
Idea During search, eliminate 1-key nodes
(except the root) so key can be removed from leaf w/o emptying it
24
It’s like“always delete a leaf node”
Rule 1 for Top-Down Delete
Rule 1: Transfer When 1-key node (except root) is met,
borrow a key from an adjacent sibling
25
2, 4
1 5,6,7
Transfer
Subtrees have to be adjusted too!
3
2, 5
1 6,73, 4
Rule 1 is no good for this guy(No double rotation)
Rule 2 for Top-Down Delete
Rule 2: Fusion If no adjacent sibling has more than 1
key, borrow a key from parent (Note that parent except root has at least 2 keys.)
26
2, 4
1 5
Fuse
Subtrees have to be adjusted too!
3
4
1, 2, 3 5
Rule 3 for Top-Down Delete
Rule 3: Fusion with root If parent is root and contains only one
key, and sibling has only one key Fuse into a 3-key node as the new root (and tree depth decrease by one)
27
2
1 3
Fuse 1, 2, 3
Example of Top-Down Delete
Delete 40
28
20
14 62, 70, 7932 43
1018
25
33
42
47
57, 6074
81
50
40
66
Example of Top-Down Delete
Delete 40
29
14 62, 70, 7932 43
1018
25
33
42
47
57, 6074
8166
20, X, 50
Place holderto be filled with 42
Example of Top-Down Delete
Delete 40
30
14 70, 7932 43, 50
1018
25
33
42
47
57, 6074
8166
20, X, 62
Place holderto be filled with 42 Uplifted node
Drop-down node
Adjusted subtree
Example of Top-Down Delete
Delete 40
31
14 70, 7932 50
1018
25
33
42, 43, 47 57, 6074
8166
20, X, 62
Now we can move 42 to X
Example of Top-Down Delete
Final result after deleting 40
32
14 70, 7932 50
1018
25
33
43, 47 57, 6074
8166
20, 42, 62
33
Analysis of Bottom-Up Delete
Let T be a 2-3-4 tree with n items Tree T has O(log n) height
In a deletion operation We visit O(log n) nodes to locate the node
from which to delete the entry We handle an underflow with a series of
O(log n) fusions, followed by at most one transfer
Each fusion and transfer takes O(1) time
Thus, deleting an item from a 2-3-4 tree takes O(log n) time
34
Comparison of Map Implementations
Find Put Erase Notes
Hash Table
1expected
1expected
1expected
o no ordered map methodso simple to implement
Skip List
log nhigh prob.
log nhigh prob.
log nhigh prob.
o randomized insertiono simple to implement
AVL and 2-3-4 Tree
log nworst-case
log nworst-case
log nworst-case
o complex to implement