我无法理解为什么所有递归调用的父引用变量值在 parent=n 完成后会发生变化?

I am not able to understand why parent reference variable value of all recursive calls changes as soon as parent=n is done?

提问人:Shivansh Singhal 提问时间:12/6/2022 最后编辑:HariHaravelanShivansh Singhal 更新时间:12/7/2022 访问量:44

问:

    Node parent;
    private int size;

    public void addNodes() {
        if (size == 0) {
            Node n = new Node(sc.nextInt());
            parent = n;
            root = n;
            size++;
        }

        System.out.println("Does " + parent.data + " have a left node");

        if (sc.nextBoolean()) {
            Node n = new Node(sc.nextInt());
            parent.left = n;
            parent = n;
            addNodes();
        }

        System.out.println("Does " + parent.data + " have a right node?");

        if (sc.nextBoolean()) {
            Node n = new Node(sc.nextInt());
            parent.right = n;
            parent = n;
            addNodes();
        }
    }

我不明白为什么所有递归调用的引用变量值在完成后都会发生变化。parentparent = n

如果有任何疑问,只需运行该程序即可。我尝试创建一个二叉树并使用递归对其进行初始化。

Java 对象 递归 引用

评论

0赞 Al-Anazi 12/6/2022
考虑一下。
0赞 shmosel 12/7/2022
所有递归调用的引用变量值...只有一个值,因为它是一个字段,而不是一个变量。如果有任何疑问,只需运行该程序即可。你没有发布一个程序,只是一段代码。

答: 暂无答案