【发布时间】:2020-12-28 20:33:36
【问题描述】:
我的代码:
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
TreeNode* head = NULL;
helper(head, 0, nums.size()-1, nums);
return head;
}
void helper(TreeNode* node, int left, int right, vector<int> nums) {
if(left>right)
return ;
int mid = (left+right)/2;
TreeNode* temp = new TreeNode(nums[mid]);
node = temp;
helper(temp->left, left, mid-1, nums);
helper(temp->right, mid+1, right, nums);
}
};
这会为所有情况输出“[]”。我看到了一些返回 TreeNode 指针的递归解决方案,并想尝试不同的解决方案。 我在这里想念什么?谢谢。
【问题讨论】:
-
分配给函数的(非引用)参数在该函数之外没有任何影响。指针没有什么特别之处。
-
顺便说一句,use nullptr for pointers
-
@molbdnilo 但由于我将指针传递给节点,它们不是通过引用传递吗?
-
如果你想要一个函数来改变
int变量中的内容,你可以传递一个指向它的指针int *。如果您希望函数更改TreeNode*变量中的内容,请将指针传递给它TreeNode** -
@PranavVA 您正在按值传递指针。如果指针有效,你可以修改它指向的节点,但你永远不能改变它指向的 which 节点。
标签: c++ recursion binary-search-tree