gpt4 book ai didi

c++ - 为什么我的节点在设置为新节点后被设置为 nullptr?

转载 作者:行者123 更新时间:2023-12-01 14:37:19 25 4
gpt4 key购买 nike

我已将节点指针初始化为 nullptr 并将其作为引用传递给辅助函数。在辅助函数内,我将之前为 nullptr 的指针设置为等于 new Pointer。然而,函数结束后,它又被设置为nullptr。

void helper(vector<int>& nums, int start, int end, TreeNode* root){
if(start >= end) return;
root = new TreeNode;
int median = (start + end) / 2;
root -> val = nums[median];
helper(nums, start, median - 1, root -> left);
helper(nums, median + 1, end, root -> right);
}

TreeNode* sortedArrayToBST(vector<int>& nums) {
TreeNode* root = nullptr;
helper(nums, 0, nums.size() - 1, root);
return root;
}

最佳答案

passed it as reference into a helper function

不,指针是按值本身传递的。参数root只是实参的一个拷贝,函数内部对指针本身的任何修改与实参无关。

将其更改为按引用传递:

void helper(vector<int>& nums, int start, int end, TreeNode*& root){
// ^
if(start >= end) return;
root = new TreeNode;
int median = (start + end) / 2;
root -> val = nums[median];
helper(nums, start, median - 1, root -> left);
helper(nums, median + 1, end, root -> right);
}

关于c++ - 为什么我的节点在设置为新节点后被设置为 nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62604603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com