Balanced Binary Search Trees height is Olog n
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 • published in 1962 • red-black trees • published in 1972 • find, insert, and erase take O(log n) time
Balanced Binary Search Trees • Indexed AVL trees • Indexed red-black trees • Indexed operations also take O(log n) time
Balanced Search Trees • • • weight balanced binary search trees 2 -3 & 2 -3 -4 trees AA trees B-trees Splay trees etc.
AVL Tree • A binary tree • More specifically it’s a “self-balancing binary search 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 must be -1, 0, or 1 • rebalancing if necessary
Balance Factors -1 1 0 0 1 0 -1 0 0 This is an AVL tree. 0
Height The height of an AVL tree that has n nodes is at most 1. 44 log 2 (n+2). The height of every n node binary tree is least log 2 (n+1). at
AVL Search Tree -1 10 1 1 7 40 0 3 0 1 8 0 5 1 0 45 30 -1 20 35 25 0 0 -1 0 60
AVL Tree • Find(key) – Same as BST find, but worst-case O(logn) • Insert(key, value) – Same as BST insert, then check balance and rebalance if necessary • Erase(key) – Similar to insertion of AVL, but must continue to trace the path towards the root
insert(9) -1 10 0 1 1 7 40 0 3 0 1 8 0 5 0 1 -1 9 45 30 0 -1 20 35 25 0 0 -1 0 60
insert(29) -1 10 1 1 7 40 0 3 0 1 8 0 5 1 0 45 30 -2 -1 20 RR imbalance => new node is in right subtree of blue node (node with bf = -2) 35 25 0 0 0 60 -1 0 29 -1
insert(29) -1 10 1 1 7 40 0 3 0 1 8 1 0 0 0 35 25 5 0 20 RR rotation. 45 30 29 0 0 -1 0 60
AVL Rotations • Four cases to consider, cases 1 to 4: 1. RR (right-right) Single rotation to left 2. LL (left-left) Single rotation to right 3. RL (right-left) Double rotation 1. One rotation to get to case 1 2. Then case 1 4. LR (left-right) Double rotation 1. One rotation to get to case 2 2. Then case 2 Insertion sequence: RR) 1, 2, 3 LL) 3, 2, 1 RL) 1, 3, 2 LR) 3, 1, 2
Red Black Trees Colored Nodes Definition • Binary search tree. • Each node is colored 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
Red Black Tree Properties • Remember these 4 important properties: 1. 2. 3. 4. Every node is either red or black The root and external nodes are black If a node is red, then its parent is black All simple paths from any node x to a descendent leaf have the same number of black nodes = black-height(x)
Example Red Black Tree 10 7 3 1 40 8 5 45 30 35 20 25 60
Red Black Trees Colored Edges Definition • Binary search tree. • Child pointers are colored 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.
Example Red Black Tree 10 7 3 1 40 8 5 45 30 35 20 25 60
RB Tree unbalanced cases • 8 unbalanced cases – CLRS reduces that to 6 • More details are taught in: – Introduction to Algorithms (CLRS) and Algorithms (Sedgewick) books – COT 5405 Analysis of Algorithms course
Red Black Tree • The height of a red black tree that has n (internal) nodes is between log 2(n+1) and 2 log 2(n+1). • RB vs AVL: – AVL may require rotations more often in insert/delete – RB may have higher height • C++ STL Class map => red black tree • Java standard library Tree. Map => red-black tree
Read more • More on AVL trees: – https: //en. wikipedia. org/wiki/AVL_tree – https: //www. cs. purdue. edu/homes/ayg/CS 251/slides /chap 7 b. pdf • More on Red-Black trees: – https: //en. wikipedia. org/wiki/Red%E 2%80%93 blac k_tree – http: //algs 4. cs. princeton. edu/33 balanced/
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). u v • Undirected graph => no oriented edge. • Directed graph => every edge has an orientation.
Undirected Graph 2 3 8 1 10 4 5 6 9 7 11
Directed Graph (Digraph) 2 3 8 1 10 4 5 6 9 7 11
Applications—Communication Network 2 3 8 1 10 4 5 6 9 11 7 • Vertex = city, edge = communication link.
Driving Distance/Time Map 2 4 3 8 8 1 6 2 10 4 4 4 5 9 5 6 6 5 3 11 7 7 • Vertex = city, edge weight = driving distance/time.
Street Map 2 3 8 1 10 4 5 6 9 7 • Some streets are one way. 11
Complete Undirected Graph Has all possible edges. n=1 n=2 n=3 n=4
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).
Vertex Degree 2 3 8 1 10 4 5 6 9 11 7 Number of edges incident to vertex. degree(2) = 2, degree(5) = 3, degree(3) = 1
Sum Of Vertex Degrees 8 10 9 11 Sum of degrees = 2 e (e is number of edges)
In-Degree Of A Vertex 2 3 8 1 10 4 5 6 9 11 7 in-degree is number of incoming edges indegree(2) = 1, indegree(8) = 0
Out-Degree Of A Vertex 2 3 8 1 10 4 5 6 9 11 7 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
- Slides: 36