420 likes | 679 Views
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
E N D
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 Indexed operations alsotake O(log n) time
Balanced Search Trees weight balanced binary search trees 2-3 & 2-3-4 trees AA trees B-trees BBST etc.
AVL Tree • binary tree • for every node x, define its balance factor balance 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
-1 Balance Factors 1 1 -1 0 1 0 This is an AVL tree. 0 -1 0 0 0 0
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).
-1 10 1 1 7 40 -1 0 1 0 45 3 8 30 0 -1 0 0 0 60 35 1 20 5 0 25 AVL Search Tree
-1 10 insert(9) 0 1 1 7 40 -1 0 1 -1 0 45 3 8 30 0 -1 0 0 0 0 60 35 1 9 20 5 0 25
-1 10 insert(29) 1 1 7 40 -1 0 1 0 45 3 8 30 0 -1 0 0 0 -2 60 35 1 20 5 0 -1 RR imbalance => new node is in right subtree of right subtree of blue node (node with bf = -2) 25 0 29
-1 10 insert(29) 1 1 7 40 -1 0 1 0 45 3 8 30 0 0 0 0 0 60 35 1 25 5 0 0 20 29 RR rotation.
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.
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.
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.
A 1 A B B’L B 0 AR B AR A h h h+1 BL BR B’L BR BR AR h h h+1 h h h Before insertion. After insertion. LL Rotation 2 0 • Subtree height is unchanged. • No further adjustments to be done. 1 0 After rotation.
A 1 A C B 0 B A B C Before insertion. After insertion. LR Rotation (case 1) 2 0 • Subtree height is unchanged. • No further adjustments to be done. -1 0 0 0 After rotation.
A A 1 C B AR B A B 0 AR h h BL BL 0 C BL C’L CR AR C h h h h h-1 h C’L CR CL CR h h-1 h-1 h-1 LR Rotation (case 2) 2 0 • Subtree height is unchanged. • No further adjustments to be done. -1 0 -1 1
A 2 A 1 C 0 B -1 AR B A B 0 AR 1 0 h h BL -1 BL 0 C BL CL C’R AR C h h h h-1 h h CL C’R CL CR h-1 h h-1 h-1 LR Rotation (case 3) • Subtree height is unchanged. • No further adjustments to be done.
Single & Double Rotations • Single • LL and RR • Double • LR and RL • LR is RR followed by LL • RL is LL followed by RR
A 2 A 2 C 0 C AR B -1 AR B A 1 0 h h BL -1 C’R B C BL CL C’R AR h h h h-1 h h BL CL CL C’R h h-1 h-1 h After insertion. After RR rotation. After LL rotation. LR Is RR + LL
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.
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
10 7 40 45 3 8 30 60 35 1 20 5 25 Example Red Black Tree
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.
10 7 40 45 3 8 30 60 35 1 20 5 25 Example Red Black Tree
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
u • v 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 Graphs • Undirected edge has no orientation (u,v). • Undirected graph => no oriented edge. • Directed graph => every edge has an orientation.
2 3 8 1 10 4 5 9 11 6 7 Undirected Graph
2 3 8 1 10 4 5 9 11 6 7 Directed Graph (Digraph)
2 3 8 1 10 4 5 9 11 6 7 Applications—Communication Network • Vertex = city, edge = communication link.
2 4 3 8 8 1 6 10 2 4 5 4 4 3 5 9 11 5 6 7 6 7 Driving Distance/Time Map • Vertex = city, edge weight = driving distance/time.
2 3 8 1 10 4 5 9 11 6 7 Street Map • Some streets are one way.
n = 4 n = 1 n = 2 n = 3 Complete Undirected Graph Has all possible edges.
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.
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).
2 3 8 1 10 4 5 9 11 6 7 Vertex Degree Number of edges incident to vertex. degree(2) = 2, degree(5) = 3, degree(3) = 1
8 10 9 11 Sum Of Vertex Degrees Sum of degrees = 2e (e is number of edges)
2 3 8 1 10 4 5 9 11 6 7 In-Degree Of A Vertex in-degree is number of incoming edges indegree(2) = 1, indegree(8) = 0
2 3 8 1 10 4 5 9 11 6 7 Out-Degree Of A Vertex out-degree is number of outbound edges outdegree(2) = 1, outdegree(8) = 2
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