Balanced Binary Search Trees
description
Transcript of Balanced Binary Search Trees
![Page 1: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/1.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/8.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/16.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/17.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/18.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/19.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/20.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/21.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/22.jpg)
Example Red Black Tree
10
7
8
1 5
30
40
20
25
35
45
60
3
![Page 23: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/23.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/24.jpg)
Example Red Black Tree
10
7
8
1 5
30
40
20
25
35
45
60
3
![Page 25: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/25.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/26.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/27.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/28.jpg)
Undirected Graph
23
8101
45
911
67
![Page 29: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/29.jpg)
Directed Graph (Digraph)
23
8101
45
911
67
![Page 30: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/30.jpg)
Applications—Communication Network
• Vertex = city, edge = communication link.
23
8101
45
911
67
![Page 31: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/31.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/32.jpg)
Street Map
• Some streets are one way.
23
8101
45
911
67
![Page 33: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/33.jpg)
Complete Undirected Graph
Has all possible edges.
n = 1 n = 2 n = 3 n = 4
![Page 34: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/34.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/35.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/36.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/37.jpg)
Sum Of Vertex Degrees
Sum of degrees = 2e (e is number of edges)
810
911
![Page 38: Balanced Binary Search Trees](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/38.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/39.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062305/568150f1550346895dbf0b89/html5/thumbnails/40.jpg)
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