NullPointerException将数据添加到BST

时间:2017-05-11 18:33:49

标签: java eclipse tree binary-search-tree

对以下问题的任何帮助将不胜感激。

我正在实施一个有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)

我一直试图解决这个问题好几个小时,如果有人能暗示我哪里出错了,那就非常感激。

谢谢

1 个答案:

答案 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;
}