【问题标题】:Binary tree properties - Balanced二叉树属性 - 平衡
【发布时间】:2013-02-14 19:14:18
【问题描述】:

我正在尝试了解二叉树的属性。但我不确定一件事:

定义。一棵二叉树指出:

  1. 如果对于每个节点,二叉树的左子树中的内部节点数和右子树中的内部节点数最多相差 1,则该二叉树是平衡的。

  2. 如果任何两个离开 diff,则二叉树是平衡的。深度的最大为 1。

我问我这两个是否定义。是等价的,我的意思是Def。 1 统计 Def。 2 反之亦然? ...在我看来是的...但是谁能用示例准确地解释我这个属性的(非)等价性?

谢谢, 帕特里克

【问题讨论】:

  • 添加了Property 1 => Property 2的证明。

标签: algorithm binary-tree


【解决方案1】:

不,两者不等价。

    3
   / \
  2   7
 /   / \
1   5   8
   / \   \
  4   6   9

是一棵满足属性 2 但不满足属性 1 的树。

然而,属性 1 意味着属性 2。

命题:在一棵根据属性1与n内部节点平衡的二叉树中,所有叶子的深度为

  • k 如果n = 2^k - 1
  • kk+1 如果2^k <= n < 2^(k+1)-1,深度有叶子k+1

证明:(通过对内部节点数的归纳)

对于n = 1 = 2^1-1,深度 1 有一两片叶子(根在深度 0)。

对于n = 2,一棵子树有一个内部节点,该子树中的所有叶子都在深度 2,另一棵子树为空或叶子深度为 1。

n >= 2 并考虑根据属性1 与n+1 内部节点平衡的二叉树。

如果n 是偶数n = 2*m,则两个子树都必须有m 内部节点,并且深度属性由归纳假设成立。

如果n = 2*m+1 是奇数,则一个子树有m 内部节点,另一个有m+1

  1. 如果2^k <= m < 2^(k+1)-1,则具有m 内部节点的子树在深度k+1 有叶子,并且根据归纳假设可能在深度k 叶子。具有m+1 内部节点的树在深度k+1 和可能(如果m+1 < 2^(k+1)-1)在深度k 有叶子。

  2. 如果m = 2^k - 1,则具有m 内部节点的子树仅在深度k 有叶子,而具有m+1 内部节点的子树在深度k+1 并且可能在深度@987654352 有叶子@.

【讨论】:

  • 另一个反例可能是同一棵树,取出 7 的孩子,并在 1 中添加一个孩子
  • @Eduardo:不完全是。那么根据属性 1(左边 3 个节点,右边 1 个节点)将不会平衡 3。
  • @cHao:当然不会平衡。它只会满足条件1,而不是2
  • @Eduardo:它也不满足条件 1。如果“内部节点”是指非叶节点,那么左边有 2 个节点,而右边有 0 个。
  • 你说得对,丹尼尔。我的“反例”并没有在每个层面都成立。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 2013-12-18
相关资源
最近更新 更多