avl tree name :tin ho. introduction an avl tree is another balanced binary search tree. an avl tree...
TRANSCRIPT
AVL TREEAVL TREE
Name :TIN HOName :TIN HO
IntroductionIntroduction An An AVL treeAVL tree is another balanced binary search is another balanced binary search
tree. tree. Named after their inventors, Named after their inventors, AAdelson-delson-VVelskii elskii
and and LLandis,andis, They were the first dynamically balanced trees They were the first dynamically balanced trees
to be proposed. to be proposed. Like red-black trees, they are not perfectly Like red-black trees, they are not perfectly
balanced, but pairs of sub-trees differ in height balanced, but pairs of sub-trees differ in height by at most 1, maintaining an by at most 1, maintaining an O(O(loglogn)n) search search time.time.
Definition of an AVL treeDefinition of an AVL tree
►Addition and deletion operations also Addition and deletion operations also take take O(O(loglogn)n) time. time.
►An AVL tree is a binary search tree An AVL tree is a binary search tree which has the following properties: which has the following properties:
►The sub-trees of every node differ in The sub-trees of every node differ in height by at most one. height by at most one.
►Every sub-tree is an AVL treeEvery sub-tree is an AVL tree. .
Balance requirement for an AVL Balance requirement for an AVL tree: the left and right sub-trees tree: the left and right sub-trees
differ by at most 1 in heightdiffer by at most 1 in height
1. The sub-trees of every node differ in height by at most one.
2. Every sub-tree is an AVL tree.
• Be careful with this definition: it permits some apparently unbalanced trees! For example, here are some trees:
• Tree
• AVL tree? • Yes• Examination shows that each left sub-tree has a height 1 greater
than each right sub-tree.
► AVL tree?AVL tree?
► NoNo► Sub-tree with root 8 has height 4 and sub-tree with root 18 has Sub-tree with root 8 has height 4 and sub-tree with root 18 has
height 2height 2
Key termsKey terms
AVL treesAVL trees
Trees which remain Trees which remain balancedbalanced - and thus - and thus guarantee guarantee O(logn)O(logn) search times - in a search times - in a dynamic environment. Or more dynamic environment. Or more importantly, since any tree can be re-importantly, since any tree can be re-balanced - but at considerable cost - can balanced - but at considerable cost - can be re-balanced in be re-balanced in O(logn)O(logn) time. time.
AVL TREE
• AVL Tree• An AVL tree is a tree which is balanced
• We earlier defined a balanced tree as a tree whose height is [log (n+1)]
• Another definition is “A tree is balanced if the number of nodes in every left sub-tree differs by at most 1 from the number of nodes in the corresponding right sub-tree. This is known as count-balanced
• One method of count-balancing a tree is to repeatedly move the root into the sub-tree with the smaller amount of nodes
• Each move is called a shift
Gary
Eric John
Jill
Carl Mary
Fred
Ann
Hank
KimDerek
Unbalanced Tree
Unbalanced Tree
This tree has 7 nodes to the left of the root and only 3 nodes to the right of the root
To count-balance we will right shift Jill into the right sub-tree
Jill’s in-order predecessor, Hank will now become the new root
Unbalanced Tree After 1 Shift Unbalanced Tree After 1 Shift RightRight
Jill
Eric John
Hank
Carl Mary
FredAnn
Gary
KimDerek
Unbalanced Tree After 1 Shift Unbalanced Tree After 1 Shift RightRight
• The tree is still unbalanced with 6 The tree is still unbalanced with 6 nodes to the left of root and 4 nodes nodes to the left of root and 4 nodes to the leftto the left
• We perform a shift right one more We perform a shift right one more time moving Hank into the right tree time moving Hank into the right tree and making his in-order predecessor and making his in-order predecessor (Gary) the new root(Gary) the new root
• Unbalanced Tree After 2 Shifts Right
The tree is now balanced 5-5. However the Root->left subtree is not balanced i.e 3-1 so to correct that we will right shift Eric
Jill
Eric John
Gary
Carl Mary
HankAnn
Fred
KimDerek
• 1 Shift Right On Root Left SubTree
Jill
Eric
John
Gary
Carl Mary
HankAnn
Fred
Kim
Derek
Now we have an AVL Tree
Count Balance Algorithm• // return tree whose root is n, as a count balanced (AVL) tree• public BinNode countbalance(BinNode n) {• if (not n empty) then• leftnum = number of nodes in left child• rightnum = number of nodes in right child• if (leftnum > rightnum) then• loop for i going from1 to (leftnum-rightnum)/2 do right-shift root• else • loop for i going from1 to (rightnum-leftnum)/2 do left-shift root• endif• n left child = countbalance(n left child)• n right child = countbalance(n right child)• return n• }