バイナリツリーを考えると、最も長い連続したシーケンス・パスの長さを見つけます。
パスは、親子接続に沿ってツリー内の任意のノードに、いくつかの開始ノードからノードの任意の配列を指します。(逆はできません)親から子供になるように、最長の連続したパスが必要。
例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)。 } }