저는 이진 트리에서 잎의 수를 얻으려고하는 프로그램을 작성하고 있습니다. 내가 한 일은 현재 ptr이 리프인지 아닌지를 확인한 후 계속해서 다음 하위 트리로 이동하는 것입니다. 그러나, 내가 그것을 실행할 때, 그것은 계속 돌아 간다 2. 내가 뭘 잘못하고 있니?이진 트리 numLeaf 알고리즘이 작동하지 않습니다.
상대적으로 표준 인 (rLink, lLink 등이 있기 때문에) 소스 코드를 포함하지 않았습니다. 이 때 실행할 때 오류가 없습니다 :
template <class elemType>
long int bSearchTreeType<elemType>::getLeaves(nodeType<elemType> * current, long int count) const {
if(current->rLink == NULL && current->lLink == NULL) {
count += 1;
return count;
}
if(current->rLink!=NULL) {
getLeaves(current->rLink);
}
if(current->lLink!=NULL) {
getLeaves(current->lLink);
}
}
template <class elemType>
long int bSearchTreeType<elemType>::leaves() const {
if(this->root!=NULL) {
return this->getLeaves(this->root);
}
}
편집 : 매개 변수 목록에서 count = 1 함수를 선언했습니다. 그게 내가 왜 그럴 수 있는지.
뭔가를 작성할 수 있습니다. 다른 것들은 그렇지 않지만 void가 아닌 함수는 항상 ** 반환 값으로 끝나야합니다 **. –
먼저 경고없이 컴파일 할 코드를 얻습니다. 나는 당신이 그것을 할 때 당신이 그것을 알아낼 것이라고 생각합니다. 그렇지 않은 경우 MCVE를 게시하십시오. https://stackoverflow.com/help/mcve –
컴파일러에서 아무런 경고도하지 않습니다. –