0
나는 bst에서 k 번째로 작은 숫자를 찾는 다음 코드를 가지고 있습니다.bst에서 k 번째로 작은 숫자
int kthsmallest(node* root, int* currentpos, int k){
if(root->left != NULL){
return kthsmallest(root->left, currentpos, k);
}
(*currentpos)++;
if(*currentpos == k){
return root->n;
}
if(root->right != NULL){
return kthsmallest(root->right, currentpos, k);
}
}
발신자 (가정 나는 BST 10 개 번호가) :
int temp=0;
for(i=1; i<10; i++){
temp=0;
printf("%d ", kthsmallest(root, &temp, i));
}
처음 몇 잎 노드를 출력하는 때까지이 잘 작동합니다. 그러나 그 후에는 다른 노드에 대한 정답을주지 않습니다. 내가 여기서 무엇을 놓치고 있니?
목록에서 이들을 푸는 대신, 카운트를 유지하고 카운트가 k에 도달하면 요소를 반환합니다. 그것은 위의 코드의 가정 된 논리이지만 무언가가 깨져서 작동하지 않기 때문입니다. – Karan