2
我已经编写了用于计算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
编辑:发现的bug。我曾写过
(root.right == null && root.right == null)
,而不是
(root.left == null && root.right == null)
感谢彼得·霍尔指出来。
难道你不能在其级联形式中显示BST?你确定插入是否正确完成? –
你的空间条被破坏了吗? – Water
@WillemVanOnsem是的,插入是正确完成的,我已经逐个检查了代码的其他部分。唯一的缺陷必须在这个块中。 –