gpt4 book ai didi

java - BinarySearchTree - isBalanced() 方法获取 NullPointerException - Java

转载 作者:行者123 更新时间:2023-12-01 11:38:36 30 4
gpt4 key购买 nike

我目前正在学习数据结构,现在在 BinarySearchTree。

实验问题:“考虑一种二叉搜索树的方法,该方法决定树是否高度平衡。”

当我进行实验时,不知怎的,我在测试输出中得到了 NullPointerException。我不知道为什么以及在哪里我得到一个空值。 NetBean 说错误来自 BinarySearchTree.isBalanced()

    int leftHeight = left.getHeight();
int rightHeight = right.getHeight();

return (tree.getData() == null ) || (isBalanced(left) && isBalanced(right)
&& Math.abs(leftHeight - rightHeight) <= 1);

你们能帮帮我吗?

非常感谢

这是我的 isBalanced() 方法:

public boolean isBalanced(){
return isBalanced(root);
}
private boolean isBalanced(BinaryNode<T> tree){
BinaryNode<T> left = tree.getLeftChild();
BinaryNode<T> right = tree.getRightChild();


int leftHeight = left.getHeight();
int rightHeight = right.getHeight();

return (tree.getData() == null ) || (isBalanced(left) && isBalanced(right)
&& Math.abs(leftHeight - rightHeight) <= 1);
}

这是 BinaryNode 类中的 getHeight() 方法

public int getHeight(){
return getHeight(this); // call private getHeight
} // end getHeight

private int getHeight(BinaryNode<T> node){
int height = 0;

if (node != null)
height = 1 + Math.max(getHeight(node.left),
getHeight(node.right));

return height;
} // end getHeight

最佳答案

左右 child 可能是null在你的程序中,所以在isBalanced(BinaryNode<T> tree)中你应该首先判断tree != null否则tree.getLeftChild();可能会抛出 NullPointerException。

关于java - BinarySearchTree - isBalanced() 方法获取 NullPointerException - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741521/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com