可视化一棵平衡的树



根据之前的StackOverflow答案,当二叉树的两个子树的高度相差不超过一时,二叉树是平衡的(完整的二叉树定义)。

这和说:当每个根到叶路径上的边数最多相差一时,二叉树是平衡的吗?

我试图想象二叉树和非二叉树是什么样子的,我很难理解这个概念。

谢谢。

几乎,除非其中一个子树为空:

*
 
  *
   
    *

你引用的定义有点问题,因为一棵空树实际上没有高度,但如果你把空树定义为高度-1,它就会起作用。上面的树是不平衡的,因为(空的)左子树的高度为-1,右子树的高度是1。然而,您的定义会声明树是平衡的:只有一个根到叶的路径,所以不可能与其他这样的路径不匹配。

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

   *
  /|
 * * *

然而,树的arity(子节点数量的限制)会影响其平衡性。如果您将以下树声明为二进制(只有两个子树,高度为1和0),则它是平衡的;如果您将其声明为三进制(根的中间有一个子树,并且它是空的),则不平衡:

    *
   / 
  *   *
 /
*

一个二叉树应该只有每个节点最多有两个子节点。我发现了一个网站,它显示不同的数据结构(你可以玩它们,它们是动画的)。

如果你对自平衡树感兴趣,看看AVL树,你就会明白为什么二叉树是不平衡的。祝你好运

最新更新