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'也可以從其他地方調用?我建議你在調試器中逐步完成代碼,逐步進入遞歸調用,看看真正發生了什麼。 –