[英]Difference between Complete binary tree and balanced binary tree
平衡二叉树和完全二叉树有什么区别?
说每棵完全二叉树都是平衡树是真的吗?
反过来呢?
平衡二叉树是这样一种二叉树,其中每个节点的两个子树的深度相差从不超过 1。
完全二叉树是除最后一层外的所有层都被完全填充,并且最后一层的所有叶子都在左侧的二叉树。
下面是平衡二叉树,但不是完全二叉树。 每个完整的二叉树都是平衡的,但不是相反。
1
1 1
1 1 1
1
正如暗示的那样,在一棵完整的树中,水平差总是不超过 1,所以它总是平衡的。
由于这已经发展为关于完美、平衡、完整和完整的进一步问题 - 这里也有一个澄清这些问题的答案。 假设一棵二叉树,
平衡:每个节点的左右子树的高度差不超过1。
Full : 除叶节点外的所有节点都有 2 个子节点
完成:
完整和平衡- 所有节点都有 0 或 2 个子节点, level 3 - level 2 <= 1
,(不完整- 最后一级节点尽可能不靠左)
1 --- LEVEL 0 / \\ 1 1 --- LEVEL 1 /\\ /\\ 1 1 1 1 --- LEVEL 2 - /\\ - - 1 1 --- LEVEL 3 xx - -
完整、平衡和完整- 所有节点都有 0 或 2 个子节点, 3 - 2 <= 1
,最后一级节点尽可能靠左:
1 --- LEVEL 0 / \\ 1 1 --- LEVEL 1 /\\ /\\ 1 1 1 1 --- LEVEL 2 /\\ - - - 1 1 --- LEVEL 3 - -
完整- 所有节点都有 0 或 2 个子节点(不平衡- 3 - 1 > 1
,不完整- 级别 1 有一个具有 0 个子节点的节点):
1 --- LEVEL 0 / \\ 1 1 --- LEVEL 1 / \\ - 1 1 --- LEVEL 2 / \\ - xx 1 1 --- LEVEL 3 - -
完整和平衡- 最后一级节点尽可能靠左, 3 - 3 <= 1
(未满- 有一个带有 1 个子节点的 2 级节点):
1 --- LEVEL 0 / \\ 1 1 --- LEVEL 1 /\\ /\\ 1 1 1 1 --- LEVEL 2 /\\ /\\ /\\ /x 1 1 1 11 1 1 --- LEVEL 3 - - - -- - -
平衡- 3 - 3 <= 1
,(未满- 有一个带有 1 个子节点的 2 级节点,不完整- 最后一级节点尽可能不靠左)
1 --- LEVEL 0 / \\ 1 1 --- LEVEL 1 /\\ /\\ 1 1 1 1 --- LEVEL 2 /\\ /\\ /x /\\ 1 11 11 1 1 --- LEVEL 3 - -- -- x - -
以上例子都不是完美的
当高度为 h 的二叉树的所有叶子都在级别 h 并且每个父节点恰好有两个子节点时,就说树是满的
当除最后一层之外的所有层都包含尽可能多的节点,并且最后一层的节点从左到紧填充时,我们说树是完整的。 (不完整,但完整)
当二叉树中的每个节点都有两个高度完全相同的子树时,这棵树被称为完全平衡的
完全平衡的树已满
如果节点的子树相差不超过一个,则树是高度平衡的或简单平衡的
平衡树:平衡树是二叉树的一种形式,其中每个节点的左子树的高度和右子树的高度之差最多为k ,其中 k 将是平衡因子。 如果这个平衡因子结果为 0,那么这棵树将被称为完全平衡树。
例子 :
8
6 1
3 9 1
这棵树是平衡树,平衡因子为 1,因为每个节点的子树的高度差异为 0 或 1。
完全二叉树:如果除了叶子的每一层都完全填充,则称一棵树是完整的。 并且叶节点上的任何新插入都将从左到右,这意味着左侧的叶将首先完全填充。
示例:8
6 1
3 5 4 1
现在这棵树是完整的二叉树,如果必须进行任何新的插入,那么它应该在左边的叶子下,在这个例子中是 3。 一旦 3 充满了左右孩子,那么 5 将是新插入的下一个叶子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.