对以下问题的任何帮助将不胜感激。
我正在实施一个有3个类的BST: BST , BSTNode 和个人资料。
BST课程
public class BST {
private static BSTNode root;
private BSTNode parent;
BST() {
root = null;
}
public void insertProfile(Profile p) {
BSTNode newNode = new BSTNode(p);
if (root == null) {
root = newNode;
} else {
BSTNode focusNode = root;
BSTNode parent = null;
int compare = focusNode.getProfile().getName().compareTo(parent.getProfile().getName());
while (true) {
parent = focusNode;
if (compare < 0) {
focusNode = focusNode.left;
if (focusNode == null) {
parent.left = newNode;
return;
} else {
focusNode = focusNode.right;
if (focusNode == null) {
parent.right = newNode;
return;
}
}
}
}
}
}
}
当我向BST添加一个条目时,它似乎工作正常,但是当我向BST添加两个或更多条目时,它给了我这个错误:
Exception in thread "main" java.lang.NullPointerException
at BST.insertProfile(BST.java:21)
at BSTMain.main(BSTMain.java:19)
我一直试图解决这个问题好几个小时,如果有人能暗示我哪里出错了,那就非常感激。
谢谢
答案 0 :(得分:0)
正确插入BST以平衡节点并包围空指针。
public static Node insert(Node root,int data) {
if(root == null){
Node node = new Node(data);
root = node;
}else if (data > root.data) {
root.right = insert(root.right , data);
}else if (data < root.data){
root.left = insert(root.left , data);
}
return root;
}