Поскольку добавление данных БСТ


Любая помощь по нижеследующему вопросу будет весьма признательна.

Я реализую 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 2

1 ответ:

Это из-за этого кода (в BST.java, сразу после утверждения else в insertProfile:

BSTNode parent = null;
int compare = focusNode.getProfile().getName().compareTo(parent.getProfile().getName());

То, что вы делаете, это объявляете, что parent является null, но затем вызываете метод (getProfile) на нем, что является причиной NullPointerException. Сначала вы должны создать экземпляр parent.