【发布时间】:2013-12-27 18:33:32
【问题描述】:
假设我有一个 AVL 树,它的节点将自己的平衡因子存储为单个整数。
如果我知道它的左右孩子的平衡因子,我如何计算节点 N 的平衡因子。
请注意,我没有有 rHeight 和 lHeight,所以 bal(N) = lHeight - rHeight 不是一个选项。
【问题讨论】:
-
也许你误解了平衡的概念。您可以通过两种方式平衡一棵树:高度平衡和重量平衡。我刚刚构建了一个 leftHeight=4 和 rightHeight=3 的高度平衡树。但是,leftCount=15 而 rightCount=4。我猜您所指的平衡因子与重量比高度有关,这意味着左右的项目数相差不超过 1,而高度平衡树并非总是如此。 AVL 树是高度平衡的。
-
你也可以双向平衡一棵树,但我想它要慢得多。
标签: c++ data-structures binary-tree avl-tree tree-balancing