首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一棵高度平衡的树是一棵树,只有一个孩子的节点必须有一片叶子作为它的独生子?

一棵高度平衡的树是一棵树,只有一个孩子的节点必须有一片叶子作为它的独生子?
EN

Stack Overflow用户
提问于 2022-04-02 21:21:47
回答 1查看 186关注 0票数 -1

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

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

如果只有一个子节点必须有一个叶作为唯一的子节点,那么二叉树是高度平衡的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 00:59:29

,如果只有一个子节点必须有一个叶作为唯一的子节点,那么二叉树是高度平衡的吗?

不是的。这是对平衡二叉树的一个正确的观察,但它不是平衡二叉树的完整定义。虽然所有的平衡树都具有这种特性,但是很容易产生同样具有这种属性的不平衡树。

首先,当应用于平衡树时,您的观察是正确的:

二进制树中,只有一个子的节点仍然有两个子树,其中一个是空的,其高度为0。根据定义,在平衡二叉树中,另一个非空子树的高度必须为0或1。因此,如果该节点有一个子树,那么该子节点必然是一个子树高度为1的叶节点,导致子树的高度为0和1。除了叶节点之外,任何东西都是子树高度为0和>1的不平衡树。

例如,假设节点A的左子节点B为叶节点B,而没有右子节点:

代码语言:javascript
运行
复制
   A
  /
 B

A的左子树的高度是1,它的右子树是0,所以这是一棵平衡树:高度的差异是1。

如果A继续有一个子B,并且B下的任何节点都不是叶子,则A的左子树高度大于1,而右子树的高度保持在0:

代码语言:javascript
运行
复制
    A
   /
  B
 /
C

顾名思义,这不是一棵平衡的树。

无论如何,生成一个不平衡的二叉树仍然满足您修改的定义是可能的,也是很容易的:

二叉树是高度平衡的,如果一个节点正好有一个子节点必须有一个叶子作为它的独生子?

以下树满足以下条件:唯一具有1个子节点D的节点有一个叶节点作为其子节点。然而,这棵树显然不平衡:

代码语言:javascript
运行
复制
      A
     / \
    B   C
   / \
  D   E
 /
F

您可以无限期地扩展左子树,它仍将满足您的条件;只有第二个到最后一个节点需要有一个子节点,即叶子,所有其他节点都有0或2个子节点。

代码语言:javascript
运行
复制
            A
           / \
          B   C
         / \
        D   E
       / \
      F   G
     / \
    H   I
   / \
  J   K
 /
L
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71721261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档