java中带有getter和setter的二叉树

java中带有getter和setter的二叉树,java,binary-tree,Java,Binary Tree,我试图通过下面的示例1创建二叉树,其中树是在没有getter和setter的情况下生成的。我想用geeters和setter创建它,但我一直坚持使用递归。如何使用/内部setter调用递归函数?这是密码。。 p、 美国树类 公共类TreeF{ 树根; 公共空白插入(int值){ if(root==null){ 根=新树(值); 返回; } 树电流=根; if(值

我试图通过下面的示例1创建二叉树,其中树是在没有getter和setter的情况下生成的。我想用geeters和setter创建它,但我一直坚持使用递归。如何使用/内部setter调用递归函数?这是密码。。 p、 美国树类

公共类TreeF{
树根;
公共空白插入(int值){
if(root==null){
根=新树(值);
返回;
}
树电流=根;
if(值
插入(值)
更改为
当前。插入(值)

要实现递归,您需要更改一个(或多个)参数,以便在一些递归调用后转到停止条件

在代码中,调用了属于同一对象的方法
insert
。而不是它的左/右子树。换句话说,递归永远不会结束,因为您不访问子子树

public class Tree {
private int data;
private Tree left;
private Tree right;

public Tree (int data) {
    this.data=data;
}

public int getData() {
    return data;
}
public void setData(int data) {
    this.data = data;
}
public Tree getLeft() {
    return left;
}
public void setLeft(Tree left) {
    this.left = left;
}
public Tree getRight() {
    return right;
}
public void setRight(Tree right) {
    this.right = right;
}

public void insert(int value) {
    if (value <  getData()) {
        if (getLeft() == null) {
            setLeft(new Tree(value));
        } else {
            getLeft().insert(value);
        }
    } else {
        if (getRight() == null) {
            setRight(new Tree(value));
        } else {
            getLeft().insert(value);
        }
    }
}
}
公共类树{
私有int数据;
私家树左;
私家树权;
公共树(int数据){
这个。数据=数据;
}
公共int getData(){
返回数据;
}
公共无效设置数据(整数数据){
这个数据=数据;
}
公共树getLeft(){
左转;
}
公共void setLeft(树左){
this.left=左;
}
公共树getRight(){
返还权;
}
公共无效设置权限(树权限){
这个。右=右;
}
公共空白插入(int值){
if(值
您不需要
当前
字段或
。下面是您的
insert
方法,它大大简化了演示过程

public class Tree {
    final int data;
    Tree left;
    Tree right;

    public Tree(int value) {
        data = value;
    }

    public void insert(int value) {
        if (value < data) {
            if (left == null) {
                left = new Tree(value);
            } else {
                left.insert(value);
            }
        } else {
            if (right == null) {
                right = new Tree(value);
            } else {
                right.insert(value);
            }
        }
    }
}
公共类树{
最终int数据;
左树;
树权;
公共树(int值){
数据=价值;
}
公共空白插入(int值){
如果(值<数据){
if(left==null){
左=新树(值);
}否则{
左。插入(值);
}
}否则{
if(right==null){
右=新树(值);
}否则{
右。插入(值);
}
}
}
}

当我将insert(值)更改为current.insert(值)时,我在类型树中收到消息create method insert(int)。。我已经在PasteBin中粘贴了我的树类,那么您不需要为TreeF创建新类。我将更新答案并将代码粘贴到问题中,而不是粘贴到pastebin中
public class Tree {
    final int data;
    Tree left;
    Tree right;

    public Tree(int value) {
        data = value;
    }

    public void insert(int value) {
        if (value < data) {
            if (left == null) {
                left = new Tree(value);
            } else {
                left.insert(value);
            }
        } else {
            if (right == null) {
                right = new Tree(value);
            } else {
                right.insert(value);
            }
        }
    }
}