Presentation is loading. Please wait.

Presentation is loading. Please wait.

Binary Tries (continued) split(k). Similar to split algorithm for unbalanced binary search trees. Construct S and B on way down the trie. Follow with a.

Similar presentations


Presentation on theme: "Binary Tries (continued) split(k). Similar to split algorithm for unbalanced binary search trees. Construct S and B on way down the trie. Follow with a."— Presentation transcript:

1 Binary Tries (continued) split(k). Similar to split algorithm for unbalanced binary search trees. Construct S and B on way down the trie. Follow with a backward cleanup pass over the constructed S and B.

2 Forward Pass Suppose you are at node x, which is at level j of the input trie. a x b If bit j of k is 1, move to root of b and add a to level j of Sandto level j of B.

3 Forward Pass If bit j of k is 0, move to root of a and add and b to level j of Bto level j of S. a x b

4 Forward Pass Example b a c d e fg S = nullB = null k = g.key =

5 Forward Pass Example b c d e fg a S B k = g.key =

6 Forward Pass Example c d e fg B b a S k = g.key =

7 Forward Pass Example d e fg a S c b B k = g.key =

8 Forward Pass Example c a S d b B e fg k = g.key =

9 Forward Pass Example fg c a S e d b B k = g.key =

10 Forward Pass Example d b B e c a S f

11 Backward Cleanup Pass Retrace path from current nodes in S and B toward roots of respective tries. Eliminate branch nodes that are roots of subtries that have fewer than 2 dictionary pairs.

12 Backward Cleanup Pass Example e c a S f d b B f is an element node.

13 Backward Cleanup Pass Example e c a S f d b B Now backup on B.

14 Backward Cleanup Pass Example e c a S f d b B Now backup on B.

15 Backward Cleanup Pass Example e c a S f d b B Now backup on B. Assume root of d is a branch node.

16 Backward Cleanup Pass Example e c a S f d b B Complexity of split is O(height).

17 Compressed Binary Tries No branch node whose degree is 1. Add a bit# field to each branch node. bit# tells you which bit of the key to use to decide whether to move to the left or right subtrie.

18 Binary Trie bit# field shown in black outside branch node.

19 Compressed Binary Trie bit# field shown in black outside branch node.

20 Compressed Binary Trie #branch nodes = n – 1.

21 Insert Insert 0010.

22 Insert Insert

23 Insert

24 Delete Delete 0010.

25 Delete Delete 1001.

26 Delete

27 Split(k) Similar to splitting an uncompressed binary trie.

28 Join(S,m,B) Insert m into B to get B’. |S| <= 1 or |B’| = 1 handled as special cases as in the case of uncompressed tries. When |S| > 1 and |B’| > 1, let S max be the largest key in S and let B’ min be the smallest key in B’. Let d be the first bit which is different in S max and B’ min.

29 Cases To Consider d < min{bit#(S), bit#(B’)} bit#(S) = bit#(B’) bit#(S) < bit#(B’) bit#(S) > bit#(B’) 01 bit#(S) ab S 01 cd B’ bit#(B’)

30 d < min{bit#(S), bit#(B’)} 01 d SB’ Bit d of S max must be 0.

31 bit#(S) = bit#(B’) 01 s ab S 01 s cd B’ Not possible, because keys in b are larger than those in c. However, all keys in S are supposed to be smaller than those in B’.

32 bit#(S) < bit#(B’) 01 s ab S 01 b’ cd B’ 01 s a J(b,B’)

33 bit#(S) > bit#(B’) 01 s ab S 01 b’ cd B’ 01 b’ J(S,c)d Complexity is O(max{height(S), height(B)}). S max and B’ min are found just once.


Download ppt "Binary Tries (continued) split(k). Similar to split algorithm for unbalanced binary search trees. Construct S and B on way down the trie. Follow with a."

Similar presentations


Ads by Google