Solution for Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

19
Solution for Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

description

Solution for Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem). M=3, L=3. Insert 12. 12. M=3, L=3. Insert 24. 12. 24. M=3, L=3. Insert 36. 12. 24. 36. M=3, L=3. Insert 17. 24. 12. 12. 24. 12. 24. Create root. split. 17. 17. 36. 17. 36. 24. - PowerPoint PPT Presentation

Transcript of Solution for Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

Page 1: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

Solution for • Section Worksheet 4, #7b &

#7c• Section Worksheet 4 #3a &

#3b (same problem)

Page 2: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 12

12

Page 3: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 24

12

24

Page 4: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 36

12

24

36

Page 5: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 17

12

17

24

36

36 overflows!

split

12

17

24

36

Old node needs to have ceiling( (L+1)/2 ) = 2 items, new node needs to have floor( (L+1)/2 ) = 2 items.

Create root

12

17

24

36

24

First key in new root is the smallest item of right child

Page 6: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 18

12

17

18

24

36

24

Page 7: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 5

18

18 overflows!

split

Old node needs to have ceiling( (L+1)/2 ) = 2 items, new node needs to have floor( (L+1)/2 ) = 2 items. Then fix pointer and internal node keys.

5

12

17

24

36

24

175

12

24

36

17 24

18

Page 8: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 22

175

12

24

36

17 24

18

22

Page 9: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 20 (step 1)

22

22 overflows!

Split internal node175

12

24

36

17 24

18

20

After splitting (17,18,20,22) into (17,18) & (20,22) we have overflow in the internal (parent) node

175

12

24

36

17 20

18

20

22

Overflow!

Page 10: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Insert 20 (step 2)

Create root

Old internal node needs to have ceiling( (M+1)/2 ) = 2 pointers, new node needs to have floor( (M+1)/2 ) = 2 pointers. This means they each have 1 key, since each key has a left and a right pointer.

175

12

24

36

17

18

20

22

24

175

12

24

36

17

18

20

22

24

20

Root’s 1st key should be the smallest item in its right child, so smallest item of (20,22,24,36) is 20.

Page 11: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 17 (step 1)

Delete 17

175

12

24

36

17

18

20

22

24

20

Original Tree

175

12

24

36

17

20

22

24

20

Underflow, because leaf now has ceiling(L/2) - 1 items in leaf node.

Page 12: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 17 (step 2)

merge

If (17)’s neighbor, (5,12), has enough items such that it won’t underflow, we could adopt 12, but that would cause underflow, so need to merge

175

12

24

36

17

20

22

24

20

Merging leaf nodes caused underflow in parent internal node, which now only ceiling(M/2)-1 pointers (i.e. only 1 pointer). So need to fix!

5

12

17

24

36

20

22

24

20

Page 13: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 17 (step 3)

merge

Internal node’s neighbor, (24), does not have enough pointers such that it will not underflow if we adopt one, so we must merge these two internal nodes.

But now, the root is underflowed (only 1 pointer), so…

5

12

17

24

36

20

22

24

20

5

12

17

24

36

20 24

20

22

Page 14: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 17 (step 4)

….we can just delete the root.

5

12

17

24

36

20 24

20

22

Page 15: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 12

No underflow, so we’re done.

5

17

24

36

20 24

20

22

Page 16: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 22

Deleting 22 causes underflow in middle child. We could adopt one of neighbor’s children to fix underflow, except then, neighbor would underflow, so we need to merge.

5

17

24

36

20 24

20merge

After merging, fix the keys in the internal node.

5

17

20

24

36

24

Page 17: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 5

Deleting 5 doesn’t cause underflow, so we’re fine.

17

20

24

36

24

Page 18: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 36 (step 1)

Deleting 36 causes an underflow, i.e. leaf now has ceiling(L/2)-1 items. Adopting from neighbor (17,20) would cause underflow in the neighbor, so need to merge.

17

20

24

24

merge 17

20

24

Now we have an underflow of only 1 pointer in the parent node, so we need to fix it…

Page 19: Solution for  Section Worksheet 4, #7b & #7c Section Worksheet 4 #3a & #3b (same problem)

M=3, L=3Delete 36 (step 2)

17

20

24

…so we delete it, and we’re done.