- By
**arawn** - Follow User

- 166 Views
- Uploaded on

Download Presentation
## Multi-Way search Trees

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

### RedBlack

Multi-Way search Trees

- 2-3 Trees:

a. Nodes may contain 1 or 2 items.

b. A node with k items has k + 1 children

c. All leaves are on same level.

Updating

- Insertion:
- Find the appropriate leaf. If there is only one item, just add to leaf.
- Insert(23); Insert(15)
- If no room, move middle item to parent and split remaining two items among two children.
- Insert(3);

Delete

- If item is not in a leaf exchange with in-order successor.
- If leaf has another item, remove item.
- Examples: Remove(110);
- (Insert(110); Remove(100); )
- If leaf has only one item but sibling has two items: redistribute items. Remove(80);

Some more removals…

- Remove(70);

Swap(70, 75);

Remove(70);

“Merge” Empty node with sibling;

Join parent with node;

Now every node has k+1 children except that one node has 0 items and one child.

Sibling can spare an item: redistribute.

- 110

Details

- 1. Swap(85, 90) //inorder successor
- 2. Remove(85) //empty node created
- 3. Merge with sibling
- 4. Drop item from parent// (50,90) empty Parent
- 5. Merge empty node with sibling, drop item from parent (95)
- 6. Parent empty, merge with sibling drop item. Parent (root) empty, remove root.

Deletion Summary

- If item k is present but not in a leaf, swap with inorder successor;
- Delete item k from leaf L.
- If L has no items: Fix(L);
- Fix(Node N);
- //All nodes have k items and k+1 children
- // A node with 0 items and 1 child is possible, it will have to be fixed.

Deletion (continued)

- If N is the root, delete it and return its child as the new root.
- Example: Delete(8);

5

5

1

2

3

3

3 5

3

8

Return

3 5

Deletion (Continued)

- If a sibling S of N has 2 items distribute items among N, S and the parent P; if N is internal, move the appropriate child from S to N.
- Else bring an item from P into S;
- If N is internal, make its (single) child the child of S; remove N.
- If P has no items Fix(P) (recursive call)

(2,4) Trees

- Size Property: nodes may have 1,2,3 items.
- Every node, except leaves has size+1 children.
- Depth property: all leaves have the same depth.
- Insertion: If during the search for the leaf you encounter a “full” node, split it.

Removal

- As with BS trees, we may place the node to be removed in a leaf.
- If the leaf v has another item, done.
- If not, we have an UNDERFLOW.
- If a sibling of v has 2 or 3 items, transfer an item.
- If v has 2 or 3 siblings we perform a transfer

Removal

- If v has only one sibling with a single item we drop an item from the parent to the sibling, remove v. This may create an underflow at the parent. We “percolate” up the underflow. It may reach the root in which case the root will be discarded and the tree will “shrink”.

Summary

- Both 2-3 trees and 2-4 trees make it very easy to maintain balance.
- Insertion and deletion easier for 2-4 tree.
- Cost is waste of space in each node. Also extra comparison inside each node.
- Does not “extend” binary trees.

Red-Black Trees

- Root property: Root is BLACK.
- External Property: Every external node is BLACK (external nodes: null nodes)
- Internal property: Children of a RED node are BLACK.
- Depth property: All external nodes have the same BLACK depth.

Insertion

Red Black Trees, Insertion

- Find proper external node.
- Insert and color node red.
- No black depth violation but may violate the red-black parent-child relationship.
- Let: z be the inserted node, v its parent and u its grandparent. If v is red then u must be black.

Red Black Tree

- Insert 50 (sibling of 70 is black!)

gramps 15

15

Parent 70

10

70

85

30

Child 30

20

60

Oops, red-red. ROTATE!

50

Red Black Tree

- Double Rotate – Adjust colors

30

15

70

10

20

85

60

Child-Parent-Gramps

Middle goes to “top”

Previous top becomes child. Its right child is middles left child.

50

Delete

- We first note that a red node is either a leaf or must have two children.
- Also, if a black node has a single child it must be a red leaf.
- Swap X with inorder successor.
- If inorder successor is red, (must be a leaf) delete. If it is a single child parent, delete and change its child color to black. In both cases the resulting tree is a legit red-black tree.

Inorder successor is Black

Change colors along the traverse path so that the leaf to be deleted is RED.

Delete 15.

30

15

70

10

20

85

60

5

80

90

50

65

40

55

General strategy

- As you traverse the tree to locate the inorder successor let X be the current node, T its sibling and P the parent.
- Color the root red.
- Retain: “the color of P is red.”
- If all children of X and T are black:
- P Black, X Red, T Red

Even though we want to proceed with X we have a red-red violation that needs to be fixed.

T has a red child.

P

X

T

C1

A

D

B

C

Zig-Zag, C1 Middle key.

If both children of T are red select one of the two rotations.

- If the right child of X is red make it the new parent (it is on the inorder-successor path).
- If the left child of X is red:

Delete 15

30

70

20

85

50

65

10

15

80

90

40

55

5

Third case: (mirror image) X (15) has two black children (Nulls)

Sibling has one red and one black child.

Download Presentation

Connecting to Server..