Поскольку добавление данных БСТ
Любая помощь по нижеследующему вопросу будет весьма признательна.
Я реализую BST, который имеет 3 класса: 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)
Я пытался решить эту проблему в течение многих часов, если бы кто-нибудь мог намекнуть, где я иду неправильно, было бы очень благодарный.
Спасибо
1 ответ:
Это из-за этого кода (в
BST.java
, сразу после утвержденияelse
вinsertProfile
:BSTNode parent = null; int compare = focusNode.getProfile().getName().compareTo(parent.getProfile().getName());
То, что вы делаете, это объявляете, что
parent
являетсяnull
, но затем вызываете метод (getProfile
) на нем, что является причинойNullPointerException
. Сначала вы должны создать экземплярparent
.