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 번째로 작은 노드의 값을 반환합니다.
노드 정의 : k
는 참조에 의해 전달되는 이유
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
}
내 질문입니다.
기능이 수정 되었기 때문에? 그리고 * 재귀 호출 후에 *를 사용했습니다. –
@Someprogrammerdude 볼 수있는 함수에서 사용되지 않습니다. – Gyanshu
아니요, 그러나 재귀 호출은이를 수정할 수 있으며, findNode 함수 내에서 사용됩니다. 그리고'findNode'는 다른 장소에서도 호출 될 수 있습니다. 디버거에서 코드를 단계별로 실행하여 재귀 호출을 수행하여 실제로 발생하는 것을 확인하는 것이 좋습니다. –