提问人:charlievans 提问时间:11/16/2023 最后编辑:charlievans 更新时间:11/16/2023 访问量:45
如何在 Java 中创建二叉搜索树?
How Do I Create A Binary Search Tree In Java?
问:
我正在 OOP 课堂上做家庭作业,但很难看出我哪里出了问题。即使我没有对任何让我感到困惑的节点做任何事情,我也不断收到 NullPointerExceptions。 我正在尝试创建一个 insert 方法,该方法采用通用对象参数并且不返回任何内容 - 这就是我目前所拥有的:
public class BinarySearchTree<T extends Comparable <T>> implements BinaryTree<T> {
class Node {
public T data;
public Node left;
public Node right;
public Node(T newObject) {
this.data = newObject;
this.left = null;
this.right = null;
}
public void insert(T newObject) {
if (root == null) {
root = new Node(newObject);
} else if (newObject.compareTo(root.data) < 0) {
root.left.insert(newObject);
} else if (newObject.compareTo(root.data) > 0) {
root.right.insert(newObject);
}
}
}
private Node root;
public void insert(T newObject) {
this.insert(newObject);
}
}
但是,通过运行以下命令,我不断被抛出 NullPointerExceptions:bstExample.insert(5);
我看了一堆 YouTube 视频,重读了我关于二叉树(搜索)树的教科书部分,并向同学寻求支持,但没有想出任何东西。
答:
0赞
Unmitigated
11/16/2023
#1
作为 的实例方法,插入到空树中存在问题,就像这样,您不能调用任何方法。同样,调用在 是 时不起作用。您需要构建新的第一个以设置为 .insert
Node
this.root
null
null
root.left.insert(newObject);
root.left
null
Node
root.left
在类本身中实现帮助程序方法要简单得多。insert
BinarySearchTree
public void insert(T newObject) {
this.root = insert(this.root, newObject);
}
private Node insert(Node curr, T obj) {
if (curr == null)
return new Node(obj);
else {
final int comp = obj.compareTo(curr.data);
if (comp < 0)
curr.left = insert(curr.left, obj);
else if (comp > 0)
curr.right = insert(curr.right, obj);
return curr;
}
}
评论