[LC] 298バイナリツリーの最長連続シーケンス

バイナリツリーを考えると、最も長い連続したシーケンス・パスの長さを見つけます。

パスは、親子接続に沿ってツリー内の任意のノードに、いくつかの開始ノードからノードの任意の配列を指します。(逆はできません)親から子供になるように、最長の連続したパスが必要。

例1:

入力:

   1 
    \ 
     3 
    / \ 
   2 4 
        \ 
         5 

出力:3

説明:最長連続配列経路がある3-4-5ので、リターン3

例2:

入力:

   2 
    \ 
     3 
    / 
   2     
  / 
 1 

出力:2 

説明:最長の連続したシーケンス・パスがある2-3、ない3-2-1、そう返します2

/ ** 
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode { 
 * int型のval; 
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。} 
 *} 
 * / 
クラスソリューション{
     INT RES = 0 公共 INT longestConsecutive(ツリーノードのルート){
         場合(ルート== NULL ){
             戻りRES。
        } 
        ヘルパー(根、root.val、 0 );
        リターンのres; 
    } 
    
    プライベート 無効ヘルパー(TreeNodeの根、int型NUM、INT CUR){
         場合(ルート== NULL ){
             リターン
        } 
        であれば(root.val == NUM + 1 ){ 
            CUR + = 1 ; 
        } { 
            CUR = 1 
        } 
        RES = Math.max(RES、CUR)。
        ヘルパー(root.left、root.val、CUR)。
        ヘルパー(root.right、root.val、CUR)。
    } 
}

おすすめ

転載: www.cnblogs.com/xuanlu/p/12151798.html