Iは、二分木の高さを計算するJavaで再帰呼び出しの数を計算する方法は?
int height(Node root)
{
if (root == null)
return 0;
else
{
int lheight = height(root.left);
int rheight = height(root.right);
if (lheight > rheight)
return(lheight+1);
else return(rheight+1);
}
}
を下記の方法を使用していたこれは、最初私は高さに各再帰呼び出し(root.left)で1によってlheightインクリメントと考えlheight = 2返します。しかし、この0 1 0 2 0は、どのようlheightの値は、各再帰呼び出しに変更されて印刷されたprintf文を、私はprintf文を追加して、もう一度それを実行した、
int height(Node root)
{
if (root == null)
return 0;
else
{
int lheight = height(root.left);
System.out.print(lheight);
int rheight = height(root.right);
if (lheight > rheight)
return(lheight+1);
else return(rheight+1);
}
}
?私は新しい解決策を探しているわけではありません。私はこれがいろいろなやり方でできることを知っています。私はちょうどこのコードスニペットで何が起こっているのか理解したい。ここにバイナリツリーの画像リンクがあります。 Binary tree
グローバル変数を追加して関数の先頭にインクリメントすることができます。長期的な解決策は貧弱ですが、うまくいくでしょう。また、関連タグのみを追加してください。 – Carcigenicate
これはJava、C++とは何ですか? Javaの場合、 'printf'行はおそらくコンパイルされません。 – rustyx
ありがとうございます。私はどのように私が0 1 0 2 0を取得していて、単に0 1 2ではないかを知りたいと思っています。 – Daisy