二叉搜索树的高度

时间:2017-06-25 12:55:43

标签: java data-structures binary-search-tree

我已经编写了计算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指出它。

1 个答案:

答案 0 :(得分:2)

这是一个简单的拼写错误。您正在检查right == null两次,当您几乎肯定对其中一个人left == null时。{/ p>

即。这个条件:

if(root == null || (root.right == null && root.right == null)) return 0;

应该是:

if(root == null || (root.right == null && root.left == null)) return 0;

这会给你你想要的答案。