Balanced Binary Search Trees

40
Balanced Binary Search Trees height is O(log n), where n is the number of elements in the tree AVL (Adelson-Velsky and Landis) trees red-black trees find, insert, and erase take O(log n) time

description

Balanced Binary Search Trees. height is O(log n) , where n is the number of elements in the tree AVL (Adelson-Velsky and Landis) trees red-black trees find, insert, and erase take O(log n) time. Balanced Binary Search Trees. Indexed AVL trees Indexed red-black trees - PowerPoint PPT Presentation

Transcript of Balanced Binary Search Trees

Page 1: Balanced Binary Search Trees

Balanced Binary Search Trees

• height is O(log n), where n is the number of elements in the tree

• AVL (Adelson-Velsky and Landis) trees

• red-black trees

• find, insert, and erase take O(log n) time

Page 2: Balanced Binary Search Trees

Balanced Binary Search Trees

• Indexed AVL trees

• Indexed red-black trees

• Indexed operations also take

O(log n) time

Page 3: Balanced Binary Search Trees

Balanced Search Trees

• weight balanced binary search trees

• 2-3 & 2-3-4 trees

• AA trees

• B-trees

• BBST

• etc.

Page 4: Balanced Binary Search Trees

AVL Tree

• binary tree

• for every node x, define its balance factorbalance factor of x = height of left subtree of x

- height of right subtree of x

• balance factor of every node x is -1, 0, or 1

Page 5: Balanced Binary Search Trees

Balance Factors

0 0

0 0

1

0

-1 0

1

0

-1

1

-1

This is an AVL tree.

Page 6: Balanced Binary Search Trees

Height

The height of an AVL tree that has n nodes is at most 1.44 log2 (n+2).

The height of every n node binary tree is at least log2 (n+1).

Page 7: Balanced Binary Search Trees

AVL Search Tree

0 0

0 0

1

0

-1 0

1

0

-1

1

-110

7

83

1 5

30

40

20

25

35

45

60

Page 8: Balanced Binary Search Trees

insert(9)

0 0

0 0

1

0

-1 0

1

0

-1

1

-1

90

-1

0

10

7

83

1 5

30

40

20

25

35

45

60

Page 9: Balanced Binary Search Trees

insert(29)

0 0

0 0

1

0

0

1

0

-1

1

-110

7

83

1 5

30

40

20

25

35

45

60

29

0

-1

-1-2

RR imbalance => new node is in right subtree of right subtree of blue node (node with bf = -2)

Page 10: Balanced Binary Search Trees

insert(29)

0 0

0 0

1

0

0

1

0

-1

1

-110

7

83

1 5

30

40

2535

45

600

RR rotation. 20

029

Page 11: Balanced Binary Search Trees

Insert/Put

• Following insert/put, retrace path towards root and adjust balance factors as needed.

• Stop when you reach a node whose balance factor becomes 0, 2, or –2, or when you reach the root.

• The new tree is not an AVL tree only if you reach a node whose balance factor is either 2 or –2.

• In this case, we say the tree has become unbalanced.

Page 12: Balanced Binary Search Trees

A-Node

• Let A be the nearest ancestor of the newly inserted node whose balance factor becomes +2 or –2 following the insert.

• Balance factor of nodes between new node and A is 0 before insertion.

Page 13: Balanced Binary Search Trees

Imbalance Types

• RR … newly inserted node is in the right subtree of the right subtree of A.

• LL … left subtree of left subtree of A.

• RL… left subtree of right subtree of A.

• LR… right subtree of left subtree of A.

Page 14: Balanced Binary Search Trees

LL Rotation

• Subtree height is unchanged.• No further adjustments to be done.

Before insertion.

1

0

A

B

BL BR

AR

h h

h

A

B

B’L BR

AR

After insertion.

h+1 h

h

B

A

After rotation.

BR

hAR

h

B’Lh+1

0

0

1

2

Page 15: Balanced Binary Search Trees

LR Rotation (case 1)

• Subtree height is unchanged.• No further adjustments to be done.

Before insertion.

1

0

A

B

A

B

After insertion.

C

C

A

After rotation.

B

0

-1

2

0 0

0

Page 16: Balanced Binary Search Trees

LR Rotation (case 2)

• Subtree height is unchanged.• No further adjustments to be done.

C

A

CR

h-1AR

h

1

0

A

B

BL

CR

AR

h

h-1

h

0

CL

h-1

C

A

B

BL

CR

AR

h

h-1

h

C’Lh

C

B

BL

hC’Lh

1

-1

2

0 -1

0

Page 17: Balanced Binary Search Trees

LR Rotation (case 3)

• Subtree height is unchanged.• No further adjustments to be done.

1

0

A

B

BL

CR

AR

h

h-1

h

0

CL

h-1

C

A

B

BL

C’R

AR

h

h

h

CL

h-1

C-1

-1

2 C

A

C’Rh

AR

h

B

BL

hCL

h-1

1 0

0

Page 18: Balanced Binary Search Trees

Single & Double Rotations

• Single– LL and RR

• Double– LR and RL– LR is RR followed by LL– RL is LL followed by RR

Page 19: Balanced Binary Search Trees

LR Is RR + LL

A

B

BL

C’R

AR

h

h

h

CL

h-1

C-1

-1

2

After insertion.

A

C

CL

C’R

AR

h

h

BL

h

B

2

After RR rotation.

h-1

C

A

C’Rh

AR

h

B

BL

hCL

h-1

1 0

0

After LL rotation.

Page 20: Balanced Binary Search Trees

Insert/Put

• Following insert/put, retrace path towards root and adjust balance factors as needed.

• Stop when you reach a node whose balance factor becomes 0, 2, or –2, or when you reach the root.

• The new tree is not an AVL tree only if you reach a node whose balance factor is either 2 or –2.

• In this case, we say the tree has become unbalanced.

Page 21: Balanced Binary Search Trees

Red Black Trees

Colored Nodes Definition• Binary search tree.• Each node is colored red or black.• Root and all external nodes are black.• No root-to-external-node path has two

consecutive red nodes.• All root-to-external-node paths have the

same number of black nodes

Page 22: Balanced Binary Search Trees

Example Red Black Tree

10

7

8

1 5

30

40

20

25

35

45

60

3

Page 23: Balanced Binary Search Trees

Red Black Trees

Colored Edges Definition

• Binary search tree.

• Child pointers are colored red or black.

• Pointer to an external node is black.

• No root to external node path has two consecutive red pointers.

• Every root to external node path has the same number of black pointers.

Page 24: Balanced Binary Search Trees

Example Red Black Tree

10

7

8

1 5

30

40

20

25

35

45

60

3

Page 25: Balanced Binary Search Trees

Red Black Tree

• The height of a red black tree that has n (internal) nodes is between log2(n+1) and 2log2(n+1).

• C++ STL Class map => red black tree

Page 26: Balanced Binary Search Trees

Graphs

• G = (V,E)

• V is the vertex set.

• Vertices are also called nodes and points.

• E is the edge set.

• Each edge connects two different vertices.

• Edges are also called arcs and lines.

• Directed edge has an orientation (u,v).u v

Page 27: Balanced Binary Search Trees

Graphs

• Undirected edge has no orientation (u,v).u v

• Undirected graph => no oriented edge.

• Directed graph => every edge has an orientation.

Page 28: Balanced Binary Search Trees

Undirected Graph

23

8101

45

911

67

Page 29: Balanced Binary Search Trees

Directed Graph (Digraph)

23

8101

45

911

67

Page 30: Balanced Binary Search Trees

Applications—Communication Network

• Vertex = city, edge = communication link.

23

8101

45

911

67

Page 31: Balanced Binary Search Trees

Driving Distance/Time Map

• Vertex = city, edge weight = driving distance/time.

23

8101

45

911

67

48

6

6

7

5

24

4 53

Page 32: Balanced Binary Search Trees

Street Map

• Some streets are one way.

23

8101

45

911

67

Page 33: Balanced Binary Search Trees

Complete Undirected Graph

Has all possible edges.

n = 1 n = 2 n = 3 n = 4

Page 34: Balanced Binary Search Trees

Number Of Edges—Undirected Graph

• Each edge is of the form (u,v), u != v.

• Number of such pairs in an n vertex graph is n(n-1).

• Since edge (u,v) is the same as edge (v,u), the number of edges in a complete undirected graph is n(n-1)/2.

• Number of edges in an undirected graph is <= n(n-1)/2.

Page 35: Balanced Binary Search Trees

Number Of Edges—Directed Graph

• Each edge is of the form (u,v), u != v.

• Number of such pairs in an n vertex graph is n(n-1).

• Since edge (u,v) is not the same as edge (v,u), the number of edges in a complete directed graph is n(n-1).

• Number of edges in a directed graph is <= n(n-1).

Page 36: Balanced Binary Search Trees

Vertex Degree

Number of edges incident to vertex.

degree(2) = 2, degree(5) = 3, degree(3) = 1

23

8101

45

911

67

Page 37: Balanced Binary Search Trees

Sum Of Vertex Degrees

Sum of degrees = 2e (e is number of edges)

810

911

Page 38: Balanced Binary Search Trees

In-Degree Of A Vertex

in-degree is number of incoming edges

indegree(2) = 1, indegree(8) = 0

23

8101

45

911

67

Page 39: Balanced Binary Search Trees

Out-Degree Of A Vertex

out-degree is number of outbound edges

outdegree(2) = 1, outdegree(8) = 2

23

8101

45

911

67

Page 40: Balanced Binary Search Trees

Sum Of In- And Out-Degrees

each edge contributes 1 to the in-degree of some vertex and 1 to the out-degree of some other vertex

sum of in-degrees = sum of out-degrees = e,

where e is the number of edges in the digraph