Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二叉搜索树的高度_Java_Data Structures_Binary Search Tree - Fatal编程技术网

Java 二叉搜索树的高度

Java 二叉搜索树的高度,java,data-structures,binary-search-tree,Java,Data Structures,Binary Search Tree,我已经编写了计算BST高度的代码,但它给出了错误的答案。结果是3,但我希望是4。有人能指出我逻辑上的缺陷吗?(我将叶节点的高度定义为零,因此高度=边计数) 元素按以下顺序添加到空BST中: 20, 50, 35, 44, 9, 15, 62, 11, 13 所以我希望它应该是这样的: 20 / \ / \ 9 50 \ / \ 15 35 62 / \ 11 44 \ 13

我已经编写了计算BST高度的代码,但它给出了错误的答案。结果是3,但我希望是4。有人能指出我逻辑上的缺陷吗?(我将叶节点的高度定义为零,因此高度=边计数)

元素按以下顺序添加到空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)

感谢彼得·霍尔指出这一点。

这是一个简单的打字错误。您正在两次检查
right==null
,而您几乎可以肯定其中一个的意思是
left==null

即这种情况:

if(root == null || (root.right == null && root.right == null)) return 0;
应该是:

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

这将为您提供您想要的答案。

您不能以级联形式显示BST吗?你确定插入正确吗?你的空格键断了吗?@WillemVanOnsem是的,插入正确,我已经逐个检查了代码的其他部分。唯一的缺陷必须在这个块中。这是第一行中的一个简单错误。您正在检查
right==null
right==null
。您可能想让其中一个
@PeterHall谢谢,先生。我为这个问题绞尽脑汁已经有一段时间了。谢谢你指出这个错误。
if(root == null || (root.right == null && root.left == null)) return 0;