【问题标题】:Isn't this a balanced binary tree?这不是平衡二叉树吗?
【发布时间】:2015-01-24 05:40:54
【问题描述】:

下图中的树不是平衡二叉树吗?我的一个朋友认为这不能平衡,因为节点 A 位于根 E 的深度 2 处,而 G 和 L 位于 E 的深度 4 处,因此 E 必须以 -2 的因子不平衡。我的信念是,只有在以下情况下节点才不平衡:

Absolute(Heigh of left subtree - Height of right subtree) > 1

E 的左子树的高度是 3,因为 D 而不是 2。什么是最好的方法说服我的朋友??

【问题讨论】:

  • 你在争论“平衡”这个词的两个定义。你不能说一个比另一个更好......你只需要选择一个。

标签: algorithm tree


【解决方案1】:

根据Wikipedia,如果它是可能的最小高度,则它是平衡的。在这种情况下,您可以将两个叶子“G”和“L”移动到“A”,树高将为 4。有一种方法可以使高度变小,因此树不平衡。 任何高度为ceil(log2(n)) 的树都将是平衡的。

【讨论】:

  • 确实ceil(log2(16))+1=5 并且可能的最小高度为 5。此外,如果我们能够在最小高度树中设置任何 15 个节点,我们将获得高度为 4 的完美平衡树。添加会将高度增加到 5,这证明你是对的 ;)
  • 两个叶子 'G' 'L' 可以移动到父 'A'。树高为 3。
  • 对不起,我应该提到这是一个二叉搜索树,所以 G 和 L 不能移动到 A。此外,这是一个 AVL 树。根据维基百科“节点的高度是从该节点到叶子的最长向下路径的长度。根的高度是树的高度。”节点 B 的高度为 2,节点 J 的高度为 3。差异不大于 1,并且此条件适用于树中的每个节点,因此我相信这棵树是平衡的。树有 14 个节点,ceil(log2(14+1)) = 4,即树的高度。
  • @SalilSurendran 那确实是平衡的AVL树,但不是一般的平衡树。
  • @SalilSurendran BST 具有相同的节点和高度 3(lisp 表示法):(H (D (B (A nil nil) (C nil nil)) (F (E nil nil) (J nil nil))) (L (J (I nil nil) (K nil nil)) (M nil (N nil nil))))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多