【问题标题】:Is a height-balanced tree a tree where a node with exactly one child must have a leaf as its only child?高度平衡树是否是一棵树,其中只有一个孩子的节点必须有一个叶子作为其唯一的孩子?
【发布时间】:2022-06-22 08:59:29
【问题描述】:

https://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees 说:

平衡二叉树是每个节点的左右子树高度相差不超过1的二叉树结构。

如果一个只有一个孩子的节点必须有一个叶子作为它的唯一孩子,是否相当于说二叉树是高度平衡的?

【问题讨论】:

    标签: data-structures tree


    【解决方案1】:

    不,根据二叉树的定义,每个节点可以有 0、1 或 2 个子节点。所以考虑这个示例树

         A
        / \
       B   C
      /\   /
     E  F  G  
          / \
          H  I
    

    A的左子树(以B为根)的高度为2,而右子树(以C为根)的高度为3。所以这个例子符合高度平衡树的定义(相差不大大于 1)。但是子节点 C 有一个子节点(G),它本身有 2 个叶节点(H 和 I)。

    C 只有一个子节点,但该子节点 (G) 不限于作为叶节点或只有一个叶节点 - 它可能有 2 个叶节点,但它们实际上必须是叶节点。只要满足高度差不大于1的限制。

    【讨论】:

    • 你的例子不是平衡二叉树,它要求它的所有子树也是平衡的。以C 为根的子树不平衡:其左子树的高度为 2,其右子树的高度为 0。根据您的逻辑,这是一个平衡树:i.stack.imgur.com/E4Ozf.png
    【解决方案2】:

    如果一个只有一个孩子的节点必须有一个叶子作为它的唯一孩子,是否相当于说二叉树是高度平衡的?

    是的。在平衡树中,如果任何节点有一个子节点,则该子节点必须是叶节点。根据定义,其他任何事情都会导致不平衡的子树。

    例如,考虑一个节点 A,它的左孩子有一个叶节点 B,但没有右孩子:

       A
      /
     B
    

    A的左子树高度为1,右子树高度为0。

    如果B下存在任何不是叶子的节点,则A的左子树高度大于1,而右子树高度保持为0:

        A
       /
      B
     /
    C
    

    根据定义,这不是平衡树。

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多