二分木計算leetcode.104の最大深さ

説明タイトルは:バイナリツリーのために、バイナリツリーは最大の深さを返します。

バイナリツリーを考えると、その最大の深さを見つけます。

最大深さは、最も遠いリーフノードにルートノードの下から最長パスに沿ったノードの数です。

注:葉は子を持たないノードです。

例:

バイナリツリーを考えると  [3,9,20,null,null,15,7]

    3 
   / \ 
  9 20 
    / \ 
   15 7

その深さ= 3を返します。

アイデア:

再帰、その後、1のいずれか大きい方の左部分木と右のサブツリーの深さ、のルートを取得するには、ルートから始まるが、その後、ツリーの最大の深さを得ました

境界条件:現在のノードは、次に、再帰的サブツリー、現在のサブツリーのそれ以外の場合は、最大深さを有します

再帰前方セグメント:現在のノードが子を持つ、再帰的

再帰的なリターン・セグメント:現在のノードに子がありません

 

コードの実装:

 

/ ** 
 *バイナリツリーノード定義のA。
 *パブリッククラスツリーノード{ 
 * INTヴァル; 
 *ツリーノード左; 
 *ツリーノード右; 
 *ツリーノード(INT X){X =ヴァル;} 
 *} 
 * / 

クラスソリューション{
     公共 のint MAXDEPTH (ツリーノードのルート){
         // アイデア
         // 再帰:
         // 最も深い深さのために、+1どちらか大きい方のノードの左サブツリー及び右サブツリーの深さを得るために、出発根から
         // 境界条件:現在のノードかどうか子ノードが返されませんでした、再帰的にダウンが続き、ある
         // 再帰前方セグメントを:現在のノードが子供持っ
         // 再帰的なリターンセグメントを:シングルサインノードは、子がありません
         // リターン1+ Math.max(MAXDEPTH(根を.LEFT)、MAXDEPTH(root.right)) 。
        //は、各ノードの深さを得るために、1の深さを追加し、現在のノードの左と右のサブツリー偉大な深さを返します
         // バック最深の深さの根に得るために最終的に時間
        
        のIF(ルート== nullのリターン 0 ;
         リターン。+ 1 Math.max(MAXDEPTH(root.left)、MAXDEPTH(root.right)); 
        
    } 
}

 

おすすめ

転載: www.cnblogs.com/smallone/p/12117935.html