こんにちは、バイナリツリーの最大高さを見つけるためのコードがあります。 このコードでreturn文に+1
が存在するのはなぜですか?バイナリツリーの最大高さ
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
こんにちは、バイナリツリーの最大高さを見つけるためのコードがあります。 このコードでreturn文に+1
が存在するのはなぜですか?バイナリツリーの最大高さ
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
がなかった場合、結果は常に0
バイナリツリーの最大高さが大きく、最大高さ(つまりMath.max(maxDepth(root.left), maxDepth(root.right))
部分です)を有する子の最大高さであるだろう+ツリーのルートを1にします。
単一のルートノードで構成されるツリーを考えてみましょう。その後、次のreturn文は、我々が期待するものである、1を返します:
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
return Math.max(0, 0) + 1;
return 1;
あなたのベースケースが示すように、空の木がゼロの高さを持っているでしょう、そしてあなたは、誘導を使用して背の高い木高さまで構築することができます。
再帰的ロジックがツリーの葉まで下がるまで深さ値を累積するには – janos
ノードには、左右2つのサブツリーがあります。ノードの高さは、左または右のいずれか高い方の高さにノード自体を加えたものであり、したがって+1です。それはかなり単純明快でなければなりません。たとえば、ノードが存在します。その左のツリーの高さは10、右のツリーの高さは7です。次に、ノード自体の高さは、そのノード自体の高さが10プラス1であり、それによって11 –