可视化平衡树

时间:2015-03-29 00:26:24

标签: tree binary-tree

根据之前的StackOverflow答案,如果两个子树的高度之间的差异不超过一(Complete binary tree definitions),则二叉树是平衡的。

这与说法相同:如果每个根对叶路径上的边数最多相等,则二叉树是平衡的吗?

我正在尝试想象一下二叉树与非二叉树的相似之处,并且正在努力绕过这个概念。

感谢。

2 个答案:

答案 0 :(得分:1)

差不多,除非其中一个子树是空的:

*
 \
  *
   \
    *

您引用的定义有点问题,因为空树实际上没有高度,但如果您将空树定义为高度为-1,则它可以正常工作。上面的树是不平衡的,因为(空)左子树的高度为-1,右子树的高度为1.但是,你的定义会声明树是平衡的:只有一个根到叶的路径,因此不能与其他此类路径不匹配。

然而,平衡性仅与二元性有关。二进制只是意味着没有节点有两个以上的子节点。这是一个平衡的非二叉树的例子:

   *
  /|\
 * * *

但是,树的arity(子节点数量的限制)会影响其平衡性。如果你将它声明为二进制(只有两个子树,高度为1和0),那么下面的树是平衡的,如果你声明它是三元的(不存在root的中间子树,它是空的),那么它是不平衡的:

    *
   / \
  *   *
 /
*

答案 1 :(得分:0)

二元树应每个节点最多两个子节点。我找到了一个 site ,它显示了不同的数据结构(您可以使用它们进行动画制作)。

如果您对自平衡树感兴趣,请查看AVL树,您将了解为什么二叉树可能不平衡。祝你好运!