完全二叉树和平衡二叉树之间的区别

时间:2013-02-07 16:58:37

标签: data-structures binary-tree

平衡二叉树完整二叉树之间的区别是什么?
说每个完整的二叉树平衡树是真的吗? 反过来怎么样?

4 个答案:

答案 0 :(得分:12)

平衡二叉树是二叉树,其中每个节点的两个子树的深度永远不会超过1。

完整二叉树是一棵二叉树,除最后一级以外的所有级别都已完全填充,最后一级的所有叶子都在左侧。

下面是一个平衡的二叉树,但不是一个完整的二叉树。每个完整的二叉树都是平衡的,但不是相反。

        1
     1     1
   1   1     1
 1 

如所暗示的那样,在一个完整的树中,总是水平差异不会超过1,所以它总是平衡的

答案 1 :(得分:2)

由于这进一步发展为关于完美、平衡、完整和完整的问题 - 这里的答案也澄清了这些问题。假设一棵二叉树,

  1. 平衡:每个节点的左右子树的高度差不超过1。

  2. Full:除叶节点外的所有节点都有 2 个子节点

  3. 完成

    • 除最后一层之前的所有节点都必须有 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
    x x -  - 
    
  • 完整、平衡和完整 - 所有节点都有 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
     / \  - x x
    1   1                --- LEVEL 3
    -   -
    
  • 完整和平衡 - 最后一级节点尽可能靠左,3 - 3 <= 1未满 - 有一个二级节点1 个孩子):

           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 -  -
    

  1. 完美:所有内部节点都有两个子节点,并且所有叶子节点都具有相同的深度。

以上例子都不是完美的

答案 2 :(得分:1)

当一个高度为h的二叉树的所有叶子都在h级并且每个父亲都有两个孩子时,

树被称为完整

当所有级别但最后一个包含尽可能多的节点时,树被称为完成,并且最后一级的节点从左到右填充。 (不完整,但完整)

当二叉树中的每个节点都有两个子树,其高度完全相同时,该树被称为完全平衡

完全平衡的树木已满

如果节点的子树相差不超过一个<树> 高度平衡或只是平衡

答案 3 :(得分:0)

平衡树:平衡树是二叉树的一种形式,其中在每个节点上左子树的高度和右子树的高度之差最大为 k ,其中k将是平衡因子。如果该平衡因子变为0,则该树将称为完全平衡树。

示例:
8
6的1
3,9,1

此树是平衡因子为1的平衡树,因为每个节点的子树的高度差异为0或1。

完整的二叉树:如果除叶子的每个级别都已完全填充,则说树是完整的。并且在叶子节点上的任何新插入都将从左到右,这意味着将首先完全填充左侧级别的叶子。

示例: 8
6 1
3,5,4,1

现在,该树是完整的二叉树,如果必须执行任何新的插入操作,则该树应位于左侧的叶子下,在此示例中为3。一旦3被左,右子项填充,则5将成为下一个要插入的新叶子。