私は、バイナリツリーの葉の数を取得しようとするプログラムを書いています。私がしたことは、現在の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 –
コンパイラは何の警告も出さない –