Java 不能';t在二进制树中插入值

Java 不能';t在二进制树中插入值,java,data-structures,binary-tree,Java,Data Structures,Binary Tree,在此位中,当前始终获取根的值,这导致插入的项目不超过3个。我知道这个问题,但无法回避。如果对代码进行任何重新设计,我们将不胜感激。在您的代码中,您没有在insert()方法中传递Node的引用来跟踪您在当前树中的节点位置 目前,您只能插入3项,因为对于3项,没有使用insert(val)的递归,但是在3项之后,您使用insert调用的递归,并且由于您没有传递当前节点位置,因此出现了此问题 以下是在二叉树中插入的工作示例: public void insert(int val){

在此位中,当前始终获取根的值,这导致插入的项目不超过3个。我知道这个问题,但无法回避。如果对代码进行任何重新设计,我们将不胜感激。

在您的代码中,您没有在
insert()
方法中传递
Node
的引用来跟踪您在当前树中的节点位置

目前,您只能插入3项,因为对于3项,没有使用
insert(val)
的递归,但是在3项之后,您使用
insert
调用的递归,并且由于您没有传递当前节点位置,因此出现了此问题

以下是在二叉树中插入的工作示例:

    public void insert(int val){
        if (root == null){
            root = new Node(val);
        } else {
            Node current = root;
类bTree{
节根;
公共类节点{
左淋巴结;
节点权;
int-val;
节点(){}
节点(int-val){
这个.val=val;
}
}
公共void插入(节点currnode,int val){
if(currnode==null){
根=新节点(val);
返回;
} 

if(val)您可以将子树的根作为参数传递给
insert
函数。@Janez Kuhar@Abra将
root
的引用传递给
insert()
确实有效。谢谢。将
root
传递给
insert()
成功了!这也有助于我的其他有关OOP的查询。非常感谢。很高兴知道这对您有帮助
    public void insert(int val){
        if (root == null){
            root = new Node(val);
        } else {
            Node current = root;
class bTree {
    Node root;
    public class Node {
        Node left;
        Node right;
        int val;

        Node () {}
        Node (int val){
            this.val=val;
        }
    }

    public void insert(Node currnode, int val){
        if(currnode == null) {
            root = new Node(val);
            return;
        } 
        if(val <= currnode.val) {
            if(currnode.left == null) {
                currnode.left = new Node(val);
            } else {
                insert(currnode.left, val);
            }
            
        } else {
            if(currnode.right == null) {
                currnode.right = new Node(val);
            } else {
                insert(currnode.right, val);
            }
        }
    }

    public void displayTree(Node root){
   
        if (root.left != null){
            displayTree(root.left);
        }
        System.out.print(root.val + " - "); 
        if (root.right != null){
            displayTree(root.right);
        }
    }

    public static void main(String[] args) {
        bTree bt = new bTree();
        bt.insert(bt.root,10);
        bt.insert(bt.root,30);
        bt.insert(bt.root,4);
        bt.insert(bt.root,5);
        bt.displayTree(bt.root);
    }
}