根据以前的StackOverflow答案,二叉树是平衡的,当它的两个子树的高度从未相差超过一个(完全二叉树定义)时。
这是否等同于说:二叉树是平衡的,当且仅当每条从根到叶的路径上的边数最多有一个不同?
我正试图想象二叉树和非二叉树是什么样子的,我正挣扎着把我的头脑围绕在这个概念上。
谢谢。
发布于 2015-03-29 00:34:37
几乎,除非其中一个子树是空的:
*
\
*
\
*你引用的定义有点问题,因为一棵空树并没有真正的高度,但是如果你把空树定义为高度-1,它会起作用。上面的树是不平衡的,因为(空的)左子树有高度-1,而右边的子树有高度1。然而,您的定义将声明树是平衡的:只有一条根对叶路径,所以不可能与其他路径不匹配。
然而,平衡只部分地与二元性有关。二进制只意味着任何节点都没有两个以上的子节点。下面是一个平衡的非二叉树的例子:
*
/|\
* * *然而,树的对称性(对子节点数量的限制)可能会影响其平衡性。如果声明以下树为二进制树(只有两个子树,高度为1和0),则为平衡树;如果声明为三元树,则为不平衡树(有根的中间子树,且为空子树):
*
/ \
* *
/
*发布于 2015-03-29 00:41:01
二叉树应该只,每个节点最多有两个子节点。我发现了一个站点,它显示不同的数据结构(您可以使用它们,它们是动画的)。
如果您对自平衡树感兴趣,请查看AVL树,您将了解二叉树为什么会不平衡。祝好运!
https://stackoverflow.com/questions/29324245
复制相似问题