Red-black Trees

13
1 Red-black Trees Consider a b-tree of order 4. A node must have at least 2 children and as many as 4. A node must have at least 1 key value and as many as 3. We have always represented the key values as an array, but what if we did it as a tree?

description

Red-black Trees. Consider a b-tree of order 4. A node must have at least 2 children and as many as 4. A node must have at least 1 key value and as many as 3. We have always represented the key values as an array, but what if we did it as a tree?. Red-black Trees Example. - PowerPoint PPT Presentation

Transcript of Red-black Trees

Page 1: Red-black Trees

1

Red-black Trees

Consider a b-tree of order 4. A node must have at least 2 children

and as many as 4. A node must have at least 1 key value

and as many as 3.We have always represented the key

values as an array, but what if we did it as a tree?

Page 2: Red-black Trees

2

Red-black Trees Example

This is a valid b-tree of order 4; Now store key values in a binary search tree:

180, 260, 550

440, 500120, 150 200 600

Page 3: Red-black Trees

3

Red-black Trees Example

OK, now link up b-tree node pointers to create a binary search tree:

260550180

440500

200150120

600

Page 4: Red-black Trees

4

Red-black Trees Example

Now color inter-node links black and intra-nodes red:

260550180

440500

200150120

600

Page 5: Red-black Trees

5

Red-black Trees Example

Color each node the color of the edge incident on it:

260550180

440500

200150120

600

Page 6: Red-black Trees

6

Red-black Trees Example

This is a Red-black Tree. It is a height-balanced binary search tree.

260550180

440500

200150120

600

Page 7: Red-black Trees

7

Red-black Properties

A red node must have only black nodes as children.

A black node may have either red or black nodes as children.

The path from the root to any terminal level node must pass through the same number of black nodes.

Page 8: Red-black Trees

8

Red-black Insert

The insert algorithm follows the rules for b-trees, but defines it in terms of node color: Search for place to insert; All new insertions

go in as red nodes. (E.G. All insertions go into an existing b-tree node).

If parent of new node is black, stop. (E.G. If the b-tree node is not full, no problem).

If parent is red, see if a simple AVL-type rotation will work: look at grandparent as root of rotation.

Page 9: Red-black Trees

9

Red-black Insert II

If rotation doesn’t work, move the nearest black ancestor to its parent by making it red and both of its children black. (e.g. split the B-tree node & move middle key to parent).

Repeat for newly colored red node. (e.g. repeat for parent B-tree node).

Page 10: Red-black Trees

10

Red-black Delete

Same basic idea: Find key to delete; If it is not at the terminal level, replace with

its in order successor & delete this value. Thus, all deletions which reduce the

number of nodes occur at the terminal level of the B-tree.

The rules follow those for deleting from a B-tree:

Page 11: Red-black Trees

11

Red-black Delete II

If the node is red, do your standard BST delete (e.g. the B-tree node is not empty).

If the node is black, but has a red child, do your standard BST delete & make the red child black (e.g. again, B-tree node is not empty).

If the node is black and has no children…

Page 12: Red-black Trees

12

Red-black Delete III

…Attempt to “borrow” from parent’s other child.

…Failing that, “combine” nodes and repeat at (B-tree) parent.

Page 13: Red-black Trees

13

The End Slide