为了账号安全,请及时绑定邮箱和手机立即绑定

java中带有getter和setter的二叉树

java中带有getter和setter的二叉树

婷婷同学_ 2021-10-17 10:39:06
我正在尝试通过以下示例 1 创建二叉树,其中树是在没有 getter 和 setter 的情况下创建的。我想用geeters和setter创建它,但我坚持递归。如何使用/在 setter 中调用递归函数?这是代码.. ps Tree 类pastebinpublic class TreeF {Tree root;public void insert(int value) {    if (root==null) {    root = new Tree(value);        return;    }     Tree current = root;    if (value < current.getData() ) {        if (current.getLeft()==null) {            current.setLeft(new Tree (value));        }else {            // call insert method inside current.left object [currrent.left(insert(value))]            current=current.getLeft();            insert (value);        }    }    else {        if (current.getRight()==null) {            current.setRight(new Tree (value));        }else {            current=current.getRight();            insert (value);        }     }    } }
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

更改insert(value)为current.insert(value)


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


在您的代码中,您调用了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);

        }

    }

}

}


查看完整回答
反对 回复 2021-10-17
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您不需要current字段或root. 这是您的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);

            }

        }

    }

}


查看完整回答
反对 回复 2021-10-17
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信