Analysis

5.1.1 Analysis

How good is the AVL balancing rule? That is, before we consider how much complication it adds to BST operations, what does this balancing rule guarantee about performance? This is a simple question only if you're familiar with the mathematics behind computer science. For our purposes, it suffices to state the results:

An AVL tree with n nodes has height between log2 (n + 1) and 1.44 * log2 (n + 2) - 0.328. An AVL tree with height h has between pow (2, (h + .328) / 1.44) - 2 and pow (2, h) - 1 nodes.

For comparison, an optimally balanced BST with n nodes has height ceil (log2 (n + 1)). An optimally balanced BST with height h has between pow (2, h - 1) and pow (2, h) - 1 nodes.1

The average speed of a search in a binary tree depends on the tree's height, so the results above are quite encouraging: an AVL tree will never be more than about 50% taller than the corresponding optimally balanced tree. Thus, we have a guarantee of good performance even in the worst case, and optimal performance in the best case.

See also: [Knuth 1998b], theorem 6.2.3A.


Footnotes

[1] Here log2 is the standard C base-2 logarithm function, pow is the exponentiation function, and ceil is the “ceiling” or “round up” function. For more information, consult a C reference guide, such as [Kernighan 1988].


posted on 2010-10-04 13:31  sohu2000000  阅读(126)  评论(0编辑  收藏  举报

导航