递归 BST 插入不设置根 Java

Recursive BST Insert Not Setting Root Java

根始终为空。

这不是作业,只是想扩展我的知识。我正在尝试以递归方式将节点插入到二叉树中。我在这里进行了一些搜索,但每个实施方式都非常不同,这些更改不起作用。

这是我的二叉树class:

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

每次我运行这个,它都假设根是空的。我的工作代码中有调试打印行,因此我可以知道我在方法中的位置。它每次都会在 insertNew() 函数中命中第一个 if

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

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

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