我对二叉树有一些疑问:
维基百科指出二叉树是complete当“完全二叉树是这样的二叉树时,其中每个级别(可能除了最后一个级别)都被完全填充,并且所有节点都尽可能远离左侧。”最后的“尽可能向左”这段话是什么意思?
如果 (1) 它为空,或者 (2) 它的左子树和右子树是高度平衡的,并且左树的高度在 1 以内,则称结构良好的二叉树是“高度平衡的”。正确的树,取自如何判断二叉树是否平衡?,这是正确的还是 1 值存在“抖动”?我在链接的答案中读到,左右树的高度之间也可能存在 4 的差异
完整且高度平衡的定义仅适用于二叉树还是任何其他树?
-
根据维基百科中的定义参考,我得到了这一页。该定义取自那里,但进行了修改:
定义:一棵二叉树,其中每个级别(可能除了最深的级别)都被完全填充。在深度 n 处,高度
树中,所有节点必须尽可能靠左。
不过,下面还有一个注释,
完全二叉树在每个深度 k
有时,定义会根据方便性(对某事有用)而有所不同。据我了解,该段落可能是一种变体,要求叶节点首先填充最深级别的左侧(即从左到右填充)。我通常找到的定义与上面描述的完全一样,但没有那个
通道。
-
通常,高度平衡树的定义是您所定义的
描述。换句话说:
当且仅当对于每个节点,其两个子树的高度最多相差 1 时,一棵树才是平衡的。
该定义取自here。同样,有时定义会变得更加灵活以服务于特定目的。例如,定义一个AVL tree说
在AVL树中,任意节点的两个子子树的高度
至多相差一
不过,我记得有一次我不得不重写一个算法,以便树
如果任何一个的两个子子树都被认为是高度平衡的
节点最多相差 2。请注意,您给出的定义是递归的,这对于二叉树来说很常见。
- 在子树数量可变的树中,您不能说它是完整的(任何父树都可以拥有您想要的子树数量)。尽管如此,它仍然可以适用于n叉树(有固定数量的
n
孩子们)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)