1 more trees ii 2-3-4 trees, red-black trees, b trees

18
1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

Upload: loren-turner

Post on 02-Jan-2016

221 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

1

More Trees II

2-3-4 Trees, Red-Black Trees, B Trees

Page 2: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

2

Objectives

You will be able to

Describe Red-Black trees. Describe B-Trees.

Page 3: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

3

Red-Black Trees

A way of constructing 2-3-4 trees from 2-nodes.

Defined as a BST which: Has two kinds of links (red and black). Every path from root to a leaf node has same

number of black links. No path from root to leaf node has more than

two consecutive red links.

Data member added to store color of link from parent.

Page 4: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

4

Red-Black Trees

enum ColorType {RED, BLACK};

class RedBlackTreeNode{public: DataType data; ColorType parentColor; // RED or BLACK RedBlackTreeNode * parent; RedBlackTreeNode * left; RedBlackTreeNode * right;}

Now possible to construct a red-black tree to represent a 2-3-4 tree

Page 5: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

5

Red-Black Trees

We will convert each 3-Node in the 2-3-4 tree into two 2-Nodes.

Each 4-Node into three 2-Nodes.

Page 6: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

6

Red-Black Trees

2-3-4 tree represented by red-black trees as follows:

Make a link black if it is a link in the 2-3-4 tree. Make a link red if it connects nodes containing values in

same node of the 2-3-4 tree.

Some authors use h and v instead of red and black.

h (horizontal) links connect nodes from the same node of the 2-3-4 tree.

v (vertical) links are links from the 2-3-4 tree.

Page 7: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

7

Example

2-3-4 tree

Corresponding red-black tree

55

59

Page 8: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

8

Adding to a Red-Black Tree

Do top-down insertion as with 2-3-4 tree

1. Search for place to insert new node – Keep track of parent, grandparent, great grandparent.

2. When 4-node q encountered, split as follows:a. Change both links of q to blackb. Change link from parent to red:

Page 9: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

9

Adding to a Red-Black Tree

3. If now two consecutive red links, (from grandparent gp to parent p to q)Perform appropriate AVL type rotation determined by direction (left, right, left-right, right-left) from gp -> p-> q

Page 10: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

10

Example

Let's convert the quiz solution into a Red-Black tree.

Page 11: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

After Adding WY

GA

DE IL IN RI

PA TX

MA

VT WY MI NY OH

11

Page 12: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

Corresponding Red-Black Tree

GA

DE RI

PA

MA

WYOH

TX

IL IN VT NYMI

12

Page 13: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

Add NM

GA

DE RI

PA

MA

WYOH

TX

IL IN VT NYMI

Will be right child of MI

We have to split the "4-node" of MI-NY-OH

13

Page 14: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

After Adding NM

GA

DE RI

PA

MA

WYOH

TX

IL IN VT

NY

MI NM

End of Section14

Page 15: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

B-Trees

Drozdek Chapter 7

15

Page 16: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

16

B-Trees

Etymology unknown

Rudolf Bayer and Ed McCreight invented the B-tree while working at Boeing Research Labs in 1971, but they did not explain what, if anything, the B stands for.

Balanced Trees ? Bayer Trees ? Boeing Trees ?

See http://en.wikipedia.org/wiki/B-tree

Many variations: B+ Trees, B* Trees See Drozdek Chapter 7

Page 17: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

17

B-Trees Previous trees used in internal searching schemes

Tree sufficiently small to be all in memory

B-trees are intended for external searching Data stored in secondary memory Each node is a block on disk. Typically the "data" in a node is really a pointer.

B-tree of order m has properties: The root has at least two subtrees unless it is a leaf. Each node stores at most m – 1 data values

and has at most m links to subtrees. Each internal node stores at least ceil(m/2) data values. All leaves on same level

Page 18: 1 More Trees II 2-3-4 Trees, Red-Black Trees, B Trees

18

B-Trees

A 2-3-4 tree is a B-tree of order 4 Note example below of order 5 B-tree

Best performance for disk storage found to be with values for 50 ≤ m ≤ 400

End of Presentation