Presentation is loading. Please wait.

Presentation is loading. Please wait.

Multi-Way Search Trees

Similar presentations


Presentation on theme: "Multi-Way Search Trees"โ€” Presentation transcript:

1 Multi-Way Search Trees
Manolis Koubarakis Data Structures and Programming Techniques

2 Multi-Way Search Trees
Multi-way trees are trees such that each internal node can have many children. Let us assume that the entries we store in a search tree are pairs of the form (๐‘˜,๐‘ฅ) where ๐‘˜ is the key and ๐‘ฅ the value associated with the key. Example: Assume we store information about students. The key can be the student ID while the value can be information such as name, year of study etc. Data Structures and Programming Techniques

3 Data Structures and Programming Techniques
Definitions A tree is ordered if there is a linear ordering defined for the children of each node; that is, we can identify children of a node as being the first, the second, third and so on. Let ๐‘ฃ be a node of an ordered tree. We say that ๐‘ฃ is a ๐’…-node if ๐‘ฃ has ๐‘‘ children. Data Structures and Programming Techniques

4 Data Structures and Programming Techniques
Definitions (contโ€™d) A multi-way search tree is an ordered tree ๐‘‡ that has the following properties: Each internal node of ๐‘‡ has at least 2 children. That is, each internal node is a ๐‘‘-node such that ๐‘‘โ‰ฅ2. Each internal ๐‘‘-node of ๐‘‡ with children ๐‘ฃ 1 ,โ‹ฏ, ๐‘ฃ ๐‘‘ stores an ordered set of ๐‘‘โˆ’1 key-value entries ๐‘˜ 1 , ๐‘ฅ 1 ,โ‹ฏ, ๐‘˜ ๐‘‘โˆ’1 , ๐‘ฅ ๐‘‘โˆ’1 , where ๐‘˜ 1 โ‰คโ‹ฏโ‰ค ๐‘˜ ๐‘‘โˆ’1 . Let us conveniently define ๐‘˜ 0 =โˆ’โˆž and ๐‘˜ ๐‘‘ =+โˆž. For each entry (๐‘˜,๐‘ฅ) stored at a node in the subtree of ๐‘ฃ rooted at ๐‘ฃ ๐‘– ,๐‘–=1,โ‹ฏ,๐‘‘, we have that ๐‘˜ ๐‘–โˆ’1 โ‰ค๐‘˜โ‰ค ๐‘˜ ๐‘– . Data Structures and Programming Techniques

5 Data Structures and Programming Techniques
Definitions (contโ€™d) By the above definition, the external nodes of a multi-way search tree do not store any entries and are โ€œdummyโ€ nodes (i.e., our trees are extended trees). When ๐‘šโ‰ฅ2 is the maximum number of children that a node is allowed to have, then we have an ๐’Ž-way search tree. A binary search tree is a special case of a multi-way search tree, where each internal node stores one entry and has two children (i.e., ๐‘š=2). Data Structures and Programming Techniques

6 Example Multi-Way Search Tree (๐‘š=3)
22 25 14 27 17 Data Structures and Programming Techniques

7 Data Structures and Programming Techniques
Proposition Let ๐‘‡ be an ๐‘š-way search tree with height โ„Ž, ๐‘› entries and ๐‘› ๐ธ external nodes. Then, the following inequalities hold: โ„Žโ‰ค๐‘›โ‰ค ๐‘š โ„Ž โˆ’1 log ๐‘š (๐‘›+1) โ‰คโ„Žโ‰ค๐‘› ๐‘› ๐ธ =๐‘›+1 Proof? Data Structures and Programming Techniques

8 Data Structures and Programming Techniques
Proof We will prove (1) first. The lower bound can be seen by considering an ๐‘š-way search tree like the one given on the next slide where we have one internal node and one entry in each node for levels 0, 1, 2, โ‹ฏ, โ„Žโˆ’1 and level โ„Ž contains only external nodes. Data Structures and Programming Techniques

9 Data Structures and Programming Techniques
Proof (contโ€™d) 1 2 โ‹ฎ โ„Žโˆ’1 โ„Ž Data Structures and Programming Techniques

10 Data Structures and Programming Techniques
Proof (contโ€™d) For the upper bound, consider an ๐‘š-way search tree of height โ„Ž where each internal node in the levels 0 to โ„Žโˆ’1 has exactly ๐‘š children (the external nodes are at level โ„Ž ). These internal nodes are ๐‘–=0 โ„Žโˆ’1 ๐‘š ๐‘– = ๐‘š โ„Ž โˆ’1 ๐‘šโˆ’1 in total. Since each of these nodes has ๐‘šโˆ’1 entries, the total number of entries in the internal nodes is ๐‘š โ„Ž โˆ’1. Data Structures and Programming Techniques

11 Data Structures and Programming Techniques
Proof (contโ€™d) To prove the lower bound of (2), rewrite (1) and take logarithms in base ๐‘š. The upper bound in (2) is the same as the lower bound in (1). Data Structures and Programming Techniques

12 Data Structures and Programming Techniques
Proof (contโ€™d) We will prove (3) by induction on the height โ„Ž of the tree. Base case: Let โ„Ž=1. Then there is a single root node with ๐‘› entries and ๐‘›+1 external nodes and the proposition holds. Data Structures and Programming Techniques

13 Data Structures and Programming Techniques
Proof (contโ€™d) Inductive step: Let โ„Ž>1. If the root stores ๐‘š entries then it has ๐‘š+1 subtrees for which the inductive hypothesis holds. Therefore, each such subtree ๐‘– has ๐‘ ๐‘– entries and ๐‘ ๐‘– +1 external nodes. Therefore the tree has ๐ด=๐‘š+( ๐‘–=1 ๐‘š+1 ๐‘ ๐‘– ) entries and ๐ต= ๐‘–=1 ๐‘š+1 (๐‘ ๐‘– +1) =๐‘š+1+ ( ๐‘–=1 ๐‘š+1 ๐‘ ๐‘– ) =๐ด+1 external nodes. Data Structures and Programming Techniques

14 Searching in a Multi-Way Search Tree
Let ๐‘‡ be a multi-way search tree and ๐‘˜ be a key. The algorithm for searching for an entry with key ๐‘˜ is simple. We trace a path in ๐‘‡ starting at the root. When we are at a ๐‘‘-node ๐‘ฃ during the search, we compare the key ๐‘˜ with the keys ๐‘˜ 1 ,โ‹ฏ, ๐‘˜ ๐‘‘โˆ’1 stored at ๐‘ฃ. If ๐‘˜= ๐‘˜ ๐‘– , for some ๐‘–, the search is successfully completed. Otherwise, we continue the search in the child ๐‘ฃ ๐‘– of ๐‘ฃ such that ๐‘˜ ๐‘–โˆ’1 <๐‘˜< ๐‘˜ ๐‘– . If we reach an external node, then we know that there is no entry with key ๐‘˜ in ๐‘‡. Data Structures and Programming Techniques

15 Example Multi-Way Search Tree
22 25 14 27 17 Data Structures and Programming Techniques

16 Data Structures and Programming Techniques
Search for Key 12 22 25 27 14 17 Unsuccessful search Data Structures and Programming Techniques

17 Data Structures and Programming Techniques
Search for Key 24 22 25 27 14 Successful search 17 Data Structures and Programming Techniques

18 Insertion in a Multi-Way Search Tree
If we want to insert a new pair (๐‘˜,๐‘ฅ) into a multi-way search tree, then we start by searching for this entry. If we find the entry, then we do not need to reinsert it. If we end up in an external node, then the entry is not in the tree. In this case, we return to the parent ๐‘ฃ of the external node and attempt to insert the key there. If ๐‘ฃ has space for one more key then we insert the entry there. If not, we create a new node, we insert the entry in this node and make this node a child of ๐‘ฃ in the appropriate position. Data Structures and Programming Techniques

19 Data Structures and Programming Techniques
Insert Key 28 (๐‘š=3) 22 25 27 14 Unsuccessful search 17 Data Structures and Programming Techniques

20 Data Structures and Programming Techniques
Key 28 Inserted 22 25 14 17 Data Structures and Programming Techniques

21 Data Structures and Programming Techniques
Insert Key 32 22 25 14 Unsuccessful search 17 Data Structures and Programming Techniques

22 Data Structures and Programming Techniques
Key 32 Inserted 22 25 14 17 32 Data Structures and Programming Techniques

23 Data Structures and Programming Techniques
Insert Key 12 22 25 14 17 32 Unsuccessful Search Data Structures and Programming Techniques

24 Data Structures and Programming Techniques
Key 12 Inserted 22 25 14 17 32 12 Data Structures and Programming Techniques

25 Deletion from a Multi-Way Search Tree
The algorithm for deletion from a multi-way search tree is left as an exercise. Data Structures and Programming Techniques

26 Complexity of Operations
Let us consider the time to search a ๐‘š-way search tree for a given key. The time spent at a ๐‘‘-node depends on the implementation of the node. If we use a sorted array then, using binary search, we can search a node in ๐‘‚( log ๐‘‘ ) time. Thus the time for a search operation in the tree is ๐‘‚ โ„Ž log ๐‘š . The complexity of insertion and deletion is also ๐‘‚ โ„Ž log ๐‘š . Data Structures and Programming Techniques

27 Efficiency Considerations
We know that maintaining perfect balance in binary search trees yields shortest average search paths, but the attempts to maintain perfect balance when we insert or delete nodes can incur costly rebalancing in which every node of the tree needs to be rearranged. AVL trees showed us one way to solve this problem by abandoning the goal of perfect balance and adopt the goal of keeping the trees โ€œalmost balancedโ€. Data Structures and Programming Techniques

28 Efficiency Considerations (contโ€™d)
Multi-way search trees give us another way to solve this problem. The primary efficiency goal for a multi-way search tree is to keep the height as small as possible but permit the number of keys at each node to vary. We want the height of the tree โ„Ž to be a logarithmic function of ๐‘›, the total number of entries stored in the tree. A search tree with logarithmic height is called a balanced search tree. Data Structures and Programming Techniques

29 Balanced Multi-way Search Trees
We will study two kinds of balanced multi-way search trees: 2-3 trees 2-3-4 trees or (2,4) trees. Data Structures and Programming Techniques

30 Data Structures and Programming Techniques
2-3 Trees A 2-3 tree is a multi-way search tree which has the following properties: Size property: Each internal node contains one or two entries, and has either two or three children. Depth property: All leaves of the tree are empty trees that have the same depth (lie on a single bottom level). Data Structures and Programming Techniques

31 Data Structures and Programming Techniques
Example of 2-3 Tree H D J N K L O P A E F I Data Structures and Programming Techniques

32 Data Structures and Programming Techniques
Searching in 2-3 Trees To search for the key L, for example, we start at the root and since L > H, we follow the pointer to the right subtree of the root node. Now we note that L lies between J and N, so we follow the middle pointer between the nodes J and N to the node containing the keys K and L. L is found and the search terminates. Data Structures and Programming Techniques

33 Data Structures and Programming Techniques
Search for Key L H D J N K L O P A E F I Data Structures and Programming Techniques

34 Data Structures and Programming Techniques
Insertion of New Keys Suppose we want to insert the new key B into the tree. Since B<H, we follow the left pointer from the root node to the node containing D in the second row. Then we follow the left pointer of Dโ€™s node to the node containing A. Since B>A, we follow the right pointer of Aโ€™s node which lead us to an empty tree (an external node). Then we go back to the parent of the external node and try to store the new key there. The node containing A has room for one more key so we store key B there. We also add a new empty child to this node. Data Structures and Programming Techniques

35 Data Structures and Programming Techniques
Example: Insert B H D J N K L O P A E F I Data Structures and Programming Techniques

36 Data Structures and Programming Techniques
Example: Insert B H D J N K L O P A E F I Data Structures and Programming Techniques

37 Data Structures and Programming Techniques
Example: Result H D J N A B K L O P E F I Data Structures and Programming Techniques

38 Insertion of New Keys (contโ€™d)
Let us now insert key M. This leads to the attempt to add M to the node containing K and L which now overflows with keys K, L and M. The strategy for such cases is to split the overflowed node into two nodes and pass the middle key to the parent. Hence we split the overflowed node into two new nodes containing K and M respectively. We also pass the middle key L to the parent node containing J and N. Data Structures and Programming Techniques

39 Insertion of New Keys (contโ€™d)
The attempt to add L to this parent node results in a new overflowed node in which the key L lies between keys J and N. So we split this parent node into new nodes containing J and N respectively, and we pass the middle key L up to the root. The root has room for L so we store it there. Data Structures and Programming Techniques

40 Data Structures and Programming Techniques
Example: Insert M H D J N A B K L O P E F I Data Structures and Programming Techniques

41 Example: Insert M (contโ€™d)
H D J N A B K L O P E F I M overflows this node Data Structures and Programming Techniques

42 Example: Insert M (contโ€™d)
H D J N L A B O P E F I M K The node is split in two and L is passed to the parent node Data Structures and Programming Techniques

43 Example: Insert M (contโ€™d)
H L overflows this node D J N L A B O P E F I M K Data Structures and Programming Techniques

44 Example: Insert M (contโ€™d)
The node is split in two and L is passed up to the parent H D J N A B F I O P E K M Data Structures and Programming Techniques

45 Data Structures and Programming Techniques
Example: Result L is inserted in the root node H L D J N A B F I O P E K M Data Structures and Programming Techniques

46 Insertion of New Keys (contโ€™d)
Let us now insert key Q. Q should be entered in the node containing O and P which now overflows. Thus, this node is split up to two nodes one containing O and the other containing R, and the middle key is passed up towards the parent node. The parent node has only key N so there is space for P and it is inserted there. Data Structures and Programming Techniques

47 Data Structures and Programming Techniques
Example: Insert Q H L D J N A B F I O P E K M Q overflows this node Data Structures and Programming Techniques

48 Example: Insert Q (contโ€™d)
H L D J N P A B Q P E F I K M O This node is split up and P is passed up Data Structures and Programming Techniques

49 Data Structures and Programming Techniques
Example: Result H L D J N P A B F I Q P E K M O Data Structures and Programming Techniques

50 Insertion of New Keys (contโ€™d)
Let us now insert key R. R is inserted in the node with Q where there is space. Data Structures and Programming Techniques

51 Data Structures and Programming Techniques
Example: Insert R H L D J N P A B Q P R E F I K M O Data Structures and Programming Techniques

52 Inserting New Keys (contโ€™d)
Let us now insert key S. S should be inserted in the node with Q and R. This node overflows. Thus, it is split into two nodes one containing Q and the other containing S and R is passed up to the parent node. R now oveflows this node where N and P are also stored. Thus, this node is split into two nodes one containing N and the other containing R and the middle key P is sent up to the parent (the root). Data Structures and Programming Techniques

53 Inserting New Keys (contโ€™d)
The root now overflows with the addition of P so it is split into two nodes one containing H and the other containing P and the middle key L is used to create a new root. Thus, we have added one more level to the tree. Data Structures and Programming Techniques

54 Data Structures and Programming Techniques
Example: Insert S H L D J N P A B Q P R E F I K M O S overflows this node Data Structures and Programming Techniques

55 Example: Insert S (contโ€™d)
H L D J N P R A B E F I K Q S M O This node is split and R is sent up Data Structures and Programming Techniques

56 Example: Insert S (contโ€™d)
H L R overflows this node D J N P R A B E F I K Q S M O Data Structures and Programming Techniques

57 Example: Insert S (contโ€™d)
H L This node is split up and P is sent up D J N R A B E F I K Q S M O Data Structures and Programming Techniques

58 Example: Insert S (contโ€™d)
P overflows the root P H L D J N R A B E F I K Q S M O Data Structures and Programming Techniques

59 Data Structures and Programming Techniques
Example: Result The root splits and L becomes the new root L H P D J N R A B E F I K Q S M O Data Structures and Programming Techniques

60 Complexity of Insertion in 2-3 Trees
When we insert a key at level ๐‘˜, in the worst case we need to split ๐‘˜+1 nodes (one at each of the ๐‘˜ levels plus the root). A 2-3 tree containing ๐‘› keys with the maximum number of levels takes the form of a binary tree where each internal node has one key and two children. In such a tree ๐‘›= 2 ๐‘˜+1 โˆ’1 where ๐‘˜ is the number of the lowest level. This implies that ๐‘˜+1 = log (๐‘›+1) from which we see that the splits are in the worst case ๐‘‚ log ๐‘› . So insertion in a 2-3 tree takes at worst ๐‘ถ ๐ฅ๐จ๐  ๐’ time. Similarly we can prove that searches and deletions take ๐‘ถ ๐ฅ๐จ๐  ๐’ time. Data Structures and Programming Techniques

61 Data Structures and Programming Techniques
(2,4) Trees A (2,4) tree or tree is a multi-way search tree which has the following two properties: Size property: Every internal node contains at least one and at most three keys, and has at least two and at most four children. Depth property: All the external nodes are empty trees that have the same depth (lie on a single bottom level). Data Structures and Programming Techniques

62 Data Structures and Programming Techniques
Result Proposition. The height of a (2,4) tree storing ๐‘› entries is ๐‘‚ log ๐‘› . Proof: Let โ„Ž be the height of a (2,4) tree ๐‘‡ storing ๐‘› entries. We justify the proposition by showing that 1 2 log (๐‘›+1) โ‰คโ„Ž and โ„Žโ‰ค log (๐‘›+1) . Data Structures and Programming Techniques

63 Data Structures and Programming Techniques
Result (contโ€™d) Note that by the size property, we have at most 4 nodes at depth 1, at most 4 2 nodes at depth 2, and so on. Thus, the number of external nodes of ๐‘‡ is at most 4 โ„Ž . Similarly, by the size property, we have at least 2 nodes at depth 1, at least nodes at depth 2, and so on. Thus, the number of external nodes in ๐‘‡ is at least 2 โ„Ž . We also know that the number of external nodes is ๐‘›+1. Data Structures and Programming Techniques

64 Data Structures and Programming Techniques
Result (contโ€™d) Therefore, we obtain 2 โ„Ž โ‰ค๐‘›+1 and ๐‘›+1โ‰ค 4 โ„Ž . Taking the logarithm in base 2 of each of the above terms, we get that โ„Žโ‰ค log (๐‘›+1) log (๐‘›+1) โ‰ค2โ„Ž. These inequalities prove our claims. Data Structures and Programming Techniques

65 Data Structures and Programming Techniques
Insertion in (2,4) Trees To insert a new entry (๐‘˜,๐‘ฅ), with key ๐‘˜, into a (2,4) tree ๐‘‡, we first perform a search for ๐‘˜. Assuming that ๐‘‡ has no entry with key ๐‘˜, this search terminates unsuccessfully at an external node ๐‘ง. Let ๐‘ฃ be the parent of ๐‘ง. We insert the new entry into node ๐‘ฃ and add a new child (an external node) to ๐‘ฃ on the left of ๐‘ง. Data Structures and Programming Techniques

66 Data Structures and Programming Techniques
Insertion (contโ€™d) Our insertion method preserves the depth property, since we add a new external node at the same level as existing external nodes. But it might violate the size property. If a node ๐‘ฃ was previously a 4-node, then it may become a 5-node after the insertion which causes the tree to longer be a (2,4) tree. This type of violation of the size property is called an overflow node at node ๐‘ฃ, and it must be resolved in order to restore the properties of a (2,4) tree. Data Structures and Programming Techniques

67 Dealing with Overflow Nodes
Let ๐‘ฃ 1 ,โ‹ฏ, ๐‘ฃ 5 be the children of ๐‘ฃ, and let ๐‘˜ 1 ,โ‹ฏ, ๐‘˜ 4 be the keys stored at ๐‘ฃ. To remedy the overflow at node ๐‘ฃ, we perform a split operation on ๐‘ฃ as follows. Replace ๐‘ฃ with two nodes ๐‘ฃโ€ฒ and ๐‘ฃโ€ฒโ€ฒ, where ๐‘ฃโ€ฒ is a 3-node with children ๐‘ฃ 1 , ๐‘ฃ 2 , ๐‘ฃ 3 storing keys ๐‘˜ 1 and ๐‘˜ 2 ๐‘ฃโ€ฒโ€ฒ is a 2-node with children ๐‘ฃ 4 , ๐‘ฃ 5 , storing key ๐‘˜ 4 . If ๐‘ฃ was the root of ๐‘‡, create a new root node ๐‘ข. Else, let ๐‘ข be the parent of ๐‘ฃ. Insert key ๐‘˜ 3 into ๐‘ข and make ๐‘ฃโ€ฒ and ๐‘ฃโ€ฒโ€ฒ children of ๐‘ข, so that if ๐‘ฃ was child ๐‘– of ๐‘ข, then ๐‘ฃโ€ฒ and ๐‘ฃโ€ฒโ€ฒ become children ๐‘– and ๐‘–+1 of ๐‘ข, respectively. Data Structures and Programming Techniques

68 Data Structures and Programming Techniques
Overflow at a 5-node โ„Ž โ„Ž 2 ๐‘ข ๐‘ฃ= ๐‘ข 2 ๐‘ข 1 ๐‘ข 3 ๐‘˜ ๐‘˜ ๐‘˜ ๐‘˜ 4 ๐‘ฃ 1 ๐‘ฃ 2 ๐‘ฃ 3 ๐‘ฃ 4 ๐‘ฃ 5 Data Structures and Programming Techniques

69 The third key of ๐‘ฃ inserted into the parent node ๐‘ข
โ„Ž โ„Ž 2 ๐‘ข ๐‘˜ 3 ๐‘ฃ= ๐‘ข 2 ๐‘ข 1 ๐‘ข 3 ๐‘˜ ๐‘˜ ๐‘˜ 4 ๐‘ฃ 1 ๐‘ฃ 2 ๐‘ฃ 3 ๐‘ฃ 4 ๐‘ฃ 5 Data Structures and Programming Techniques

70 Node ๐‘ฃ replaced with a 3-node ๐‘ฃโ€ฒ and a 2-node ๐‘ฃโ€ฒโ€ฒ
โ„Ž ๐‘˜ โ„Ž 2 ๐‘ข ๐‘ข 1 ๐‘ฃ โ€ฒ = ๐‘ข 2 ๐‘ฃ โ€ฒโ€ฒ = ๐‘ข 3 ๐‘ข 4 ๐‘˜ ๐‘˜ 2 ๐‘˜ 4 ๐‘ฃ 5 ๐‘ฃ 1 ๐‘ฃ 2 ๐‘ฃ 3 ๐‘ฃ 4 Data Structures and Programming Techniques

71 Data Structures and Programming Techniques
Example Let us now see an example of a few insertions into an initially empty (2,4) tree. Data Structures and Programming Techniques

72 Data Structures and Programming Techniques
Insert 4 4 Data Structures and Programming Techniques

73 Data Structures and Programming Techniques
Insert 6 4 6 Data Structures and Programming Techniques

74 Data Structures and Programming Techniques
Insert 12 Data Structures and Programming Techniques

75 Data Structures and Programming Techniques
Insert 15 - Overflow Data Structures and Programming Techniques

76 Creation of New Root Node
12 Data Structures and Programming Techniques

77 Data Structures and Programming Techniques
Split 12 4 6 15 Data Structures and Programming Techniques

78 Data Structures and Programming Techniques
Insert 3 12 15 Data Structures and Programming Techniques

79 Data Structures and Programming Techniques
Insert 5 - Overflow 12 15 Data Structures and Programming Techniques

80 5 is Sent to the Parent Node
12 5 15 Data Structures and Programming Techniques

81 Data Structures and Programming Techniques
Split 3 4 6 15 Data Structures and Programming Techniques

82 Data Structures and Programming Techniques
Insert 10 3 4 15 6 10 Data Structures and Programming Techniques

83 Data Structures and Programming Techniques
Insert 8 3 4 15 Data Structures and Programming Techniques

84 Data Structures and Programming Techniques
Insertion (contโ€™d) Let us now see a more complicated example of insertion in a (2,4) tree. Data Structures and Programming Techniques

85 Data Structures and Programming Techniques
Initial Tree 3 4 6 8 11 Data Structures and Programming Techniques

86 Data Structures and Programming Techniques
Insert 17 - Overflow 3 4 6 8 11 Data Structures and Programming Techniques

87 15 is Sent to the Parent Node
15 3 4 6 8 11 Data Structures and Programming Techniques

88 Data Structures and Programming Techniques
Split 3 4 6 8 17 11 Data Structures and Programming Techniques

89 Data Structures and Programming Techniques
Overflow at the Root 3 4 6 8 17 11 Data Structures and Programming Techniques

90 Data Structures and Programming Techniques
Creation of New Root 12 3 4 6 8 17 11 Data Structures and Programming Techniques

91 Data Structures and Programming Techniques
Split 12 5 10 15 3 4 6 8 17 11 Data Structures and Programming Techniques

92 Data Structures and Programming Techniques
Final Tree 12 5 10 15 3 4 6 8 17 11 Data Structures and Programming Techniques

93 Complexity Analysis of Insertion
A split operation affects a constant number of nodes of the tree and a constant number of entries stored at such nodes. Thus, it can be implemented in ๐‘ถ(๐Ÿ) time. As a consequence of a split operation on node ๐‘ฃ, a new overflow may arise at the parent ๐‘ข of ๐‘ฃ. A split operation either eliminates the overflow or it propagates it into the parent of the current node. Hence, the number of split operations is bounded by the height of the tree, which is ๐‘‚ log ๐‘› . Therefore, the total time to perform an insertion is ๐‘ถ ๐’๐’๐’ˆ ๐’ . Data Structures and Programming Techniques

94 Data Structures and Programming Techniques
Removal in (2,4) Trees Let us now consider the removal of an entry with key ๐‘˜ from a (2,4) tree ๐‘‡. Removing such an entry can always be reduced to the case where the entry to be removed is stored at a node ๐‘ฃ whose children are external nodes. Suppose that the entry we wish to remove is stored in the ๐‘–-th entry ( ๐‘˜ ๐‘– , ๐‘ฅ ๐‘– ) at a node ๐‘ง that has only internal nodes as children. In this case, we swap the entry ( ๐‘˜ ๐‘– , ๐‘ฅ ๐‘– ) with an appropriate entry that is stored at a node ๐‘ฃ with external-node children as follows: We find the right-most internal node ๐‘ฃ in the subtree rooted at the ๐‘–-th child of ๐‘ง, noting that the children of node ๐‘ฃ are all external nodes. We swap the entry ( ๐‘˜ ๐‘– , ๐‘ฅ ๐‘– ) at ๐‘ง with the last entry of ๐‘ฃ. The key of this entry is the predecessor of ๐‘˜ ๐‘– in the natural ordering of the keys of the tree. Data Structures and Programming Techniques

95 Data Structures and Programming Techniques
Removal (contโ€™d) Once we ensure that the entry to be removed is stored at a node ๐‘ฃ with only external-node children, we simply remove the entry from ๐‘ฃ and remove the ๐‘–-th external node of ๐‘ฃ. Removing an entry from a node ๐‘ฃ preserves the depth property, because we always remove an external node child from a node ๐‘ฃ with only external-node children. However, we might violate the size property at ๐‘ฃ. Data Structures and Programming Techniques

96 Data Structures and Programming Techniques
Removal (contโ€™d) If ๐‘ฃ was previously a 2-node, then, after the removal, it becomes a 1-node with no entries. This type of violation of the size property is called an underflow node at ๐‘ฃ. To remedy an underflow, we check whether an immediate sibling of ๐’— is a 3-node or a 4-node. If we find such a sibling ๐‘ค, then we perform a transfer operation, in which we move a child of ๐‘ค to ๐‘ฃ, a key of ๐‘ค to the parent ๐‘ข of ๐‘ฃ and ๐‘ค, and a key of ๐‘ข to ๐‘ฃ. If ๐‘ฃ has only one sibling and this sibling is a 2-node, or if both immediate siblings of ๐‘ฃ are 2-nodes, then we perform a fusion operation, in which we merge ๐‘ฃ with a sibling, creating a new node ๐‘ฃโ€ฒ, and move a key from the parent ๐‘ข of ๐‘ฃ to ๐‘ฃโ€ฒ. Data Structures and Programming Techniques

97 Data Structures and Programming Techniques
Removal (contโ€™d) A fusion operation at a node ๐‘ฃ may cause a new underflow to occur at the parent ๐‘ข of ๐‘ฃ, which in turn triggers a transfer or fusion at ๐‘ข. Hence, the number of fusion operations is bounded by the height of the tree which is ๐‘‚ log ๐‘› . Therefore, a removal operation can take ๐‘ถ ๐’๐’๐’ˆ ๐’ time in the worst case. If an underflow propagates all the way up to the root, then the root is simply deleted. Data Structures and Programming Techniques

98 Data Structures and Programming Techniques
Examples Let us now see some examples of removal from a (2,4) tree. Data Structures and Programming Techniques

99 Data Structures and Programming Techniques
Initial Tree 12 5 10 15 4 6 8 17 11 Data Structures and Programming Techniques

100 Data Structures and Programming Techniques
Remove 4 12 5 10 15 4 ๐‘ฃ 6 8 17 11 Data Structures and Programming Techniques

101 Data Structures and Programming Techniques
Transfer 12 ๐‘ข 10 15 5 6 ๐‘ค ๐‘ฃ 8 17 11 Data Structures and Programming Techniques

102 Data Structures and Programming Techniques
After the Transfer 12 ๐‘ข 6 10 15 ๐‘ค ๐‘ฃ 5 8 17 11 Data Structures and Programming Techniques

103 Data Structures and Programming Techniques
Remove 12 12 ๐‘ข 6 10 15 ๐‘ค ๐‘ฃ 5 8 17 11 Data Structures and Programming Techniques

104 Data Structures and Programming Techniques
Remove 12 12 6 10 15 11 ๐‘ค ๐‘ฃ 5 8 17 Data Structures and Programming Techniques

105 Data Structures and Programming Techniques
Fusion of ๐‘ค and ๐‘ฃ 11 ๐‘ข 6 15 10 ๐‘ค ๐‘ฃ ๐‘ฃ 5 8 17 Data Structures and Programming Techniques

106 Data Structures and Programming Techniques
After the Fusion 11 6 15 5 8 10 17 Data Structures and Programming Techniques

107 Data Structures and Programming Techniques
Remove 13 11 6 15 13 5 8 10 14 17 Data Structures and Programming Techniques

108 Data Structures and Programming Techniques
After the Removal of 13 11 6 15 5 8 10 14 17 Data Structures and Programming Techniques

109 Data Structures and Programming Techniques
Remove 14 - Underflow 11 6 15 14 5 8 10 17 Data Structures and Programming Techniques

110 Data Structures and Programming Techniques
Fusion 11 ๐‘ข 6 15 ๐‘ฃ 5 8 10 17 Data Structures and Programming Techniques

111 Data Structures and Programming Techniques
Underflow at ๐‘ข 11 ๐‘ข 6 5 8 10 Data Structures and Programming Techniques

112 Data Structures and Programming Techniques
Fusion 11 ๐‘ข 6 5 8 10 Data Structures and Programming Techniques

113 Data Structures and Programming Techniques
Remove the Root 5 8 10 Data Structures and Programming Techniques

114 Data Structures and Programming Techniques
Final Tree 5 8 10 Data Structures and Programming Techniques

115 Data Structures and Programming Techniques
Readings T. A. Standish. Data Structures, Algorithms and Software Principles in C. Section 9.9 M. T. Goodrich, R. Tamassia and D. Mount. Data Structures and Algorithms in C++. Section 10.4 R. Sedgewick. ฮ‘ฮปฮณฯŒฯฮนฮธฮผฮฟฮน ฯƒฮต C. 3ฮท ฮ‘ฮผฮตฯฮนฮบฮฑฮฝฮนฮบฮฎ ฮˆฮบฮดฮฟฯƒฮท. ฮ•ฮบฮดฯŒฯƒฮตฮนฯ‚ ฮšฮปฮตฮนฮดฮฌฯฮนฮธฮผฮฟฯ‚. Section 13.3 Data Structures and Programming Techniques


Download ppt "Multi-Way Search Trees"

Similar presentations


Ads by Google