An avl (Adelson-Velskii and Landis) tree is a binary search tree with a balance condition, the height of the left and right subtrees can differ by at most 1. The depth of the tree is O(logn).
After an insertion, only nodes that are on the path from the insertion point to the root might have their balance altered because only those nodes have their subtrees altered.
Possible violation might occur in four cases:
1. An insertion into the left subtree of the left child
2. ...................................right........................................
3. .................................... left ........................ right .....
4. .................................. right ....................... right .....
1. and 4. could be fixed by single rotate
2. and 3. could be fixed by double rotate
Rotation operations only need a few pointer changes. The node will need to record the height info within it.
Deletion in avl Tree is somewhat more complicated than insertion. And lazy-deletion is probably the best strategy.
Reference: Data structures and Algorithm Analysis in C++ Page 136
Saturday, November 3, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment