trees(struct) 的引用传递与 int 的引用传递的工作

Working of pass by reference for trees(struct) vs pass by reference for int

提问人:Sneha Sharma 提问时间:4/8/2022 最后编辑:codelingSneha Sharma 更新时间:4/8/2022 访问量:104

问:

以下代码是“删除具有给定值(目标)的叶子”的函数。虽然我明白了代码在做什么,但假设我到达一个具有目标值的叶子并执行.那么,当它通过引用传递时,它不会返回的所有根都变成吗?就像我们通过引用传递 int 时一样,例如,计数和递增它,即使函数返回到调用它的位置,它的值也会更新并保持不变。那么,为什么在下面的代码中,的值没有改变呢?root=NULLNULLroot

 void helper(TreeNode* &root,int target){
        if(!root)return;
        
        helper(root->left,target);
        helper(root->right,target);
        if(root->val==target and root->left == NULL and root->right==NULL){
            root=NULL;
        }
        return;
    }
C++ 递归 按引用传递

评论

0赞 pptaszni 4/8/2022
是的,和你写的一模一样。但首先,你有 2 个递归调用来遍历左右分支,并且仅在叶子上调用。root=NULL
0赞 जलजनक 4/8/2022
刚刚从标签中删除了 c。中尚不支持通过 reference() 接收。虽然,在这种情况下似乎更合适。&Chelper (TreeNode* &node, int target) {...}
0赞 Sneha Sharma 4/8/2022
@pptaszni叶子加上叶子等于目标并已转换为 NULL 的节点也将被删除。
0赞 Alan Birtles 4/8/2022
请展示一个最小的可重现示例,并说明您期望在哪里变成 null 以及您如何知道它不是root
0赞 Sneha Sharma 4/8/2022
@AlanBirtles很抱歉不清楚。问题 leetcode.com/problems/delete-leaves-with-a-given-value,示例在页面本身中。谢谢

答: 暂无答案