递归BST插入不设置根Java

时间:2016-01-29 22:13:54

标签: java null binary-search-tree root

根始终为空。

这不是家庭作业,只是想扩大我的知识面。我尝试以递归方式将节点插入二叉树。我在这里做了一些搜索,但每个实现都是如此不同,这些更改都没有用。

这是我的BinaryTree类:

public class BinaryTree {

    static Node root;

    public static void insertNode(int data){

        if(root != null){

            root.printData();
            insertNew(root, new Node(data));

        }else{

            root = insertNew(root, new Node(data));

        }

    }


    private static Node insertNew(Node current, Node n){


        if(current == null){

            return n;


        }else if(current.data > n.data){

            current.left = insertNew(current.left, n);
            return current;

        }else if(current.data < n.data){

            current.right = insertNew(current.right, n);
            return current;
        }

        return current;

    }

    public static void main(String[] args){


        insertNode(9);

    }


}

这是我的节点:

class Node {

    int data;
    Node left;
    Node right;

    Node(int data){

        this.data = data;

    }

    public int printData(){

        System.out.println(this.data);
        return this.data;
    }
}

每次运行时,它都假定root为null。我的工作代码中有调试打印行,所以我可以告诉我在这些方法中的位置。它每次都会点击if函数中的第一个insertNew()

我想从概念上理解我失败的地方。

1 个答案:

答案 0 :(得分:1)

可能你不知道每次运行程序时,它都会从头开始初始化RAM中的所有数据? 在另一种情况下,您可能错误的是您认为root.data将在首次插入后打印。您应该至少进行2次插入,以使代码打印出来,因为在第一次插入时,根始终为空。

如果尝试调试,您​​可以轻松找到问题:

enter image description here