検索バイナリツリーで特定の高さにあるノードの数を計算する単純な関数を書きましたが、うまくいかないようです。 「hは」私は、ノードの数を計算する高さである検索のバイナリツリーの特定の高さにあるノード
int BinTree::nodiH(node* tree,int h,int& N)
{
int height = 0;
if(tree==NULL)
return 0;
height=max(nodiH(tree->left,h,N),nodiH(tree->right,h,N));
if(height==h)
N+=1;
return 1+height;
}
int BinTree::nodiH(int h)
{
int N=0;
nodiH(root_,h,N);
return N;
}
:私の下 はコードを投稿してください。 この関数は、私が期待しているものを返さないため、なぜわかりません。 誰かがお手伝いできれば感謝します。
ようこそ!デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小規模プログラムのデバッグ方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
高さの定義は?葉ノードは高さが 'h = 1'であると仮定しているようですが、通常、高さの定義はルートへのパスのサイズです。 –
'関数は私が期待しているものを返しません'何が** **関数が返すのですか?あなたは何を期待しましたか?入力ツリーはどのようなものでしたか? – user2079303