2017-01-13 24 views
1

こんにちは、バイナリツリーの最大高さを見つけるためのコードがあります。 このコードでreturn文に+1が存在するのはなぜですか?バイナリツリーの最大高さ

public int maxDepth(TreeNode root) { 
     if (root == null) { 
      return 0; 
     } 
     return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; 
    } 
+0

再帰的ロジックがツリーの葉まで下がるまで深さ値を累積するには – janos

+0

ノードには、左右2つのサブツリーがあります。ノードの高さは、左または右のいずれか高い方の高さにノード自体を加えたものであり、したがって+1です。それはかなり単純明快でなければなりません。たとえば、ノードが存在します。その左のツリーの高さは10、右のツリーの高さは7です。次に、ノード自体の高さは、そのノード自体の高さが10プラス1であり、それによって11 –

答えて

2

がなかった場合、結果は常に0

バイナリツリーの最大高さが大きく、最大高さ(つまりMath.max(maxDepth(root.left), maxDepth(root.right))部分です)を有する子の最大高さであるだろう+ツリーのルートを1にします。

1

単一のルートノードで構成されるツリーを考えてみましょう。その後、次のreturn文は、我々が期待するものである、1を返します:

return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; 
return Math.max(0, 0) + 1; 
return 1; 

あなたのベースケースが示すように、空の木がゼロの高さを持っているでしょう、そしてあなたは、誘導を使用して背の高い木高さまで構築することができます。

関連する問題