【发布时间】:2017-06-25 12:55:42
【问题描述】:
我编写了用于计算 BST 高度的代码,但它给了我错误的答案。结果是 3,但我希望它是 4。谁能指出我的逻辑中的缺陷,好吗? (我将叶节点的高度定义为零,因此高度 = 边数)。
public static int getHeight(Node root){
if(root == null || (root.right == null && root.right == null)) return 0;
int leftHeight = getHeight(root.left);
int rightHeight = getHeight(root.right);
return 1 + ((leftHeight >= rightHeight) ? leftHeight : rightHeight);
}
元素按以下顺序添加到空 BST 中:
20, 50, 35, 44, 9, 15, 62, 11, 13
所以我希望它应该是这样的:
20
/ \
/ \
9 50
\ / \
15 35 62
/ \
11 44
\
13
编辑:发现错误。我写过
(root.right == null && root.right == null)
而不是
(root.left == null && root.right == null)
感谢 Peter Hall 指出。
【问题讨论】:
-
您不能以级联形式显示 BST 吗?你确定插入正确吗?
-
你的空格键坏了吗?
-
@WillemVanOnsem 是的,插入是正确的,我已经检查了代码的所有其他部分。唯一的缺陷必须在这个块中。
-
这是第一行的一个简单错误。您正在检查
right == null和right == null。您可能打算将其中之一设为left。 -
@PeterHall 谢谢,先生。我在这个问题上摸不着头脑。
标签: java data-structures binary-search-tree