24 Trees
24 Trees
9 2 5 7 10 14
Each internal node has at least two children and stores d 1 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, , d 1) keys in the subtree of vd are greater than kd1
24
12
2 6 8 32 30
1 2 3 4 5 6 7 9
15
10 11 13
27
14
32
18
30
16 15 17
4
19
4/1/2003 8:31 AM
(2,4) Trees
4/1/2003 8:31 AM
(2,4) Trees
Multi-Way Searching
Similar to search in a binary search tree A each internal node with children v1 v2 vd and keys k1 k2 kd1
(2,4) Tree
A (2,4) tree (also called 2-4 tree or 2-3-4 tree) is a multi-way search with the following properties
Reaching an external node terminates the search unsuccessfully Example: search for 30 11 2 6 8 15 24 27 30
4/1/2003 8:31 AM (2,4) Trees 5 4/1/2003 8:31 AM
k = ki (i = 1, , d 1): the search terminates successfully k < k1: we continue the search in child v1 ki1 < k < ki (i = 2, , d 1): we continue the search in child vi k > kd1: we continue the search in child vd
Node-Size Property: every internal node has at most four children Depth Property: all the external nodes have the same depth
Depending on the number of children, an internal node of a (2,4) tree is called a 2-node, 3-node or 4-node 10 15 24 2 8 12 18 27 32
32
(2,4) Trees
Insertion
We insert a new item (k, o) at the parent v of the leaf reached by searching for k
Let h be the height of a (2,4) tree with n items Since there are at least 2i items at depth i = 0, , h 1 and no items at depth h, we have n 1 + 2 + 4 + + 2h1 = 2h 1 Thus, h log (n + 1)
We preserve the depth property but We may cause an overflow (i.e., node v may become a 5-node)
10 15 24 2 8 12 18
10 15 24 2 8 12
(2,4) Trees
v
27 30 32 35
8
18
4/1/2003 8:31 AM
Analysis of Insertion
Algorithm insertItem(k, o) 1. We search for key k to locate the insertion node v 2. We add the new item (k, o) at node v
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
u
15 24 32
v
12 18 27 30 32 35 12 18
v'
27 30
v"
35
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
v1 v2 v3 v4 v5
4/1/2003 8:31 AM (2,4) Trees
v1 v2 v3 v4
9
v5
4/1/2003 8:31 AM (2,4) Trees
Deletion
We reduce deletion of an item to the case where the item is at the node with leaf children Otherwise, we replace the item with its inorder successor (or, equivalently, with its inorder predecessor) and delete the latter item Example: to delete key 24, we replace it with 27 (inorder successor)
10 15 24 2 8 12 18 27 32 35
Fusion operation: we merge v with an adjacent sibling w and move an item from u to the merged node v' After a fusion, the underflow may propagate to the parent u
u
10 15 27 2 8 12 18 32 35
9 14 10
u w v
2 5 7
9 10 14
2 5 7
v'
4/1/2003 8:31 AM
(2,4) Trees
11
4/1/2003 8:31 AM
(2,4) Trees
12
Analysis of Deletion
Let T be a (2,4) tree with n items
Transfer operation: 1. we move a child of w to v 2. we move an item from u to v 3. we move an item from w to u After a transfer, no underflow occurs
Tree T has O(log n) height We visit O(log n) nodes to locate the node from which to delete the item 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
In a deletion operation
u
4 9 2 6 8
u
4 8
4/1/2003 8:31 AM
(2,4) Trees
13
Implementing a Dictionary
Comparison of efficient dictionary implementations Search Hash Table Skip List (2,4) Tree
4/1/2003 8:31 AM
Insert 1
expected
Delete 1
expected
Notes
no ordered dictionary methods simple to implement randomized insertion simple to implement
1
expected
log n
high prob.
log n
high prob.
log n
high prob.
log n
worst-case
log n
worst-case
log n
worst-case
complex to implement
(2,4) Trees
15