0
函数的参数是对递归函数中处理变量static
的变量的引用吗?以下是在BST中查找第k个最小根的功能。通过引用循环函数传递变量
int findNode(TreeNode* root, int &k) {
if(root == NULL)
return -1;
// We do an inorder traversal here.
int k1 = findNode(root->left, k);
if(k == 0) return k1; // left subtree has k or more elements.
k--;
if(k == 0) return root->val; // root is the kth element.
return findNode(root->right, k); // answer lies in the right node.
}
int kthsmallest(TreeNode* root, int k) {
return findNode(root, k); // Call another function to pass k by reference.
}
函数kthsmallest
返回第k个最小节点的值。
节点定义:
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
}
我的问题是为什么k
按引用传递。
因为它在函数中被修改? *在递归调用之后使用*。 –
@Someprogrammerdude它没有被用在调用它的函数中,正如你所看到的。 – Gyanshu
不,但递归调用可能会修改它,然后在'findNode'函数中使用它。而'findNode'也可以从其他地方调用?我建议你在调试器中逐步完成代码,逐步进入递归调用,看看真正发生了什么。 –