이 함수는 항상 실제 노드 수보다 큰 응답을 반환합니다 (예 : 트리에 노드가 3 개 있지만 4를 반환). 나는 종이에 수동으로 코드를 실행하려고 시도했지만 여전히 문제를 보지 못했습니다. 재귀 또는 함수에 대한 기본 사항이 있습니까? 마지막 기능이 작동하지만 이유를 이해이 순환 함수가 이진 탐색 트리의 노드를 계산하면 왜 항상 예상보다 큰 결과가 반환됩니까?
int countNode (Tree &T)
{
if(T==NULL) return 0;
int a = countNode(T->left);
int b = countNode(T->right);
int count = a + b + 1;
return count;
}
: 그러나
이int countNode (Tree &T)
{
int count;
if(T==NULL) return 0;
return count+=1;
countNode(T->left);
countNode(T->right);
}
이 완벽하게 작동합니다 :
int countNode (Tree &T)
{
int count;
if(T==NULL) return 0;
return count++;
countNode(T->left);
countNode(T->right);
}
이 하나 더 N'- 포인트 2 인 대답을 돌려 준다 여전히 처음 두 가지가 무엇이 잘못되었는지 알지 못합니다.