multi-way search trees

Post on 03-Jan-2016

19 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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. Example. A 2-3 tree storing 18 items. 20 80. 5. 30 70. 90 100. 25. 40 50. 75. 85. 110 120. 2 4. 10. 95. Updating. - PowerPoint PPT Presentation

TRANSCRIPT

Multi-Way search Trees

1. 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.

Example

• A 2-3 tree storing 18 items.

20 80

5 30 70 90 100

2 4 10 25 40 50 75 85 95 110 120

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 item among two children.

• Insert(3);

Insertion

• Insert(3);

20 80

5 30 70 90 100

2 3 4 10 15 23 25 40 50 75 85 95 110 120

Insert(3);

• In mid air…20 80

5 30 70 90 100

2 10 15 23 25 40 50 75 85 95 110 120

3

4

Done….

20 80

3 5 30 70 90 100

2 10 15 23 25 40 50 75 85 95 110 1204

Tree grows at the root…

• Insert(45);

20 80

3 5 30 70 90 100

2 10 25 40 45 50 75 85 95 110 1204

• New root:

80

3 5 30 90 100

2 10 25 40 75 85 95 110 1204

45

20

50

70

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);

Remove(80);• Step 1: Exchange 80 with in-order

successor.

85

3 5 30 90 100

2 10 25 40 75 80 95 110 1204

45

20

50

70

Remove(80);• Redistribute

85

3 5 30 95 110

2 10 25 40 75 90 100 1204

45

20

50

70

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.1 110

Delete(70)

85

3 5 30 95 110

2 10 25 40 90 100 1204

45

20

50

75

New tree:• Delete(75) will “shrink” the tree.

95

3 5 30 110

2 10 25 40 90 100 1204

45

20

50

75

Details

• 1. Swap(75, 90) //inorder successor• 2. Remove(75) //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.

“Shorter” 2-3 Tree

3 5 30 95 110

2 10 25 40 100 1204

20 45

50 90

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

3 8

5

3

1 2

3 5

3

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.

(2,4) Tree

10 45 60

3 8 25 50 55 70 90 100

Insert(38);

Insert(38);

3 8 25 38 50 55 70 90 100

45

10 60

Insert(105)

• Insert(105);

3 8 25 38 50 55 100 105

45

10 60 90

70

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”.

Delete(15)

35

20 60

6 15 40 50 70 80 90

Delete(15)

35

20 60

6 40 50 70 80 90

Continued

• Drop item from parent

35

60

6 20 40 50 70 80 90

Fuse

35

60

6 20 40 50 70 80 90

Drop item from root

• Remove root, return the child.

35 60

6 20 40 50 70 80 90

Summary

• Both 2-3 tress 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

• Internal property: Children of a RED node are BLACK.

• Depth property: All external nodes have the same BLACK depth.

RedBlack

Insertion

Red Black Trees, Insertion

1. Find proper external node.

2. Insert and color node red.

3. No black depth violation but may violate the red-black parent-child relationship.

4. Let: z be the inserted node, v its parent and u its grandparent. If v is red then u must be black.

Color adjustments.• Red child, red parent. Parent has a black

sibling.

a

b u

v w

zVl

ZlZr

Rotation• Z-middle key. Black height does not

change! No more red-red.

a

b z

v

w

u

Vl Zl Zr

Color adjustment II

a

b u

v w

z

Vr

ZlZr

Rotation II

a

b v

z u

ZrZlw

Vr

Recoloring

• Red child, red parent. Parent has a red sibling.

a

b u

v w

zVl

Zr

Recoloring

• Red-red may move up…

a

b u

v w

zVl

ZrZl

Red Black Tree

• Insert 10 – root

10

Red Black Tree

• Insert 10 – root

10

Red Black Tree

• Insert 85

10

85

Red Black Tree

• Insert 15

10

85

15

Red Black Tree

• Rotate – Change colors

15

10 85

Red Black Tree

• Insert 70

15

10 85

70

Red Black Tree

• Change Color

15

10 85

70

Red Black Tree

• Insert 20

20

15

10 85

70

Red Black Tree

• Rotate – Change Color

15

10 70

20 85

Red Black Tree

• Insert 60

15

10 70

20 85

60

Red Black Tree

• Change Color

15

10 70

20 85

60

Red Black Tree

• Insert 30

15

10 70

20 85

60

30

Red Black Tree

• Rotate

15

10 70

30 85

6020

Red Black Tree

• Insert 50

15

10 70

30 85

6020

50

Red Black Tree

• Insert 50

15

10 70

30 85

6020

50Oops, red-red. ROTATE!

Red Black Tree

• Double Rotate – Adjust colors

30

15 70

20 8510 60

50Child-Parent-Gramps

Middle goes to “top

Previous top becomes child.

Red Black Tree

• Insert 65

30

15 70

20 8510 60

6550

Red Black Tree

• Insert 80

30

15 70

20 8510 60

6550 80

Red Black Tree

• Insert 90

30

15 70

20 8510 60

6550 9080

Red Black Tree

• Insert 40

30

15 70

20 8510 60

6550

40

9080

Red Black Tree

• Adjust color

30

15 70

20 8510 60

6550

40

9080

Red Black Tree

• Insert 5

30

15 70

20 8510

5

60

6550

40

9080

Red Black Tree

• Insert 55

30

15 70

20 8510

5

60

6550

40

9080

55

top related