[LeetCode]のTreeNodeクラスは(javaは達成)の解析を実装します

https://blog.csdn.net/styshoo/article/details/52865386

 

LeetCodeでは、ツリーノード構造が頻繁に使用される、データ構造(ツリー)ツリーのノードを表しています。その正式な定義は次のとおりです。

ツリーノードクラス{公共
のintヴァル、
ツリーノードは、左、
ツリーノードは、右、
ツリーノード(INT X){X =ヴァル;}
}
。1
2
3。
4。
5。
6。
  ツリータイトルで、多くの場合、特定のフォーマットにいくつかのテストケースを与えますそれは以下のような木を表し、[3,9,20を、NULL、NULL、15,7 ] 次のようにツリー上:

3
/ \
920
/ \
15 7
1
2
3
4
5
  私たちは、自分の書き込みで遊ぶように私はこれを達成するためのTreeNodeの一部に拡大し、それが公式でツリー形式を構築することができますが、便利になりますあなたは簡単にコードをデバッグすることができます。

パッケージMakeLeetCodeClass;

パブリッククラスのTreeNode {
公共のint valの;
公共のTreeNodeは左。
右の公共のTreeNode。
ツリーノード(INT X){ヴァル= X。}
パブリック文字列のtoString(){
(val)で持つInteger.toStringを返します。
}

// INT [] ARR = {3、9、20は、Integer.MAX_VALUEは、Integer.MAX_VALUE、15、7}。
プライベート静的はint [] StrToIntArray(文字列str){
STR = str.substring(1、str.length() - 1)。
文字列[] STRS = str.split( "")。
[strs.length] ARR =新しいint型[] int型。

以下のために(INT i = 0; I <arr.length; iは++){
IF(STRS [I]).equals( "NULL"){
[I] = Integer.MAX_VALUEのARR。
}他{
ARR [I] = Integer.parseInt(STRS [I])。
}
}

ARRを返します。
}

//文字列str = "[3,9,20、NULL、NULL、15,7]"。
パブリック静的ツリーノードmkTree(文字列str){

INT [] ARR = StrToIntArray(STR)。
ツリーノード[]ノード=新しいツリーノード[arr.length + 1]。
以下のために(INT i = 1; iはnodes.length <; iは++){
IF(ARR [I - 1] = Integer.MAX_VALUEで!){
ノード[I] =新しいツリーノード(ARR [I - 1])。
} {他
ノード[I] = NULL;
}
}

ツリーノードのノード= NULL;
以下のために(INT i = 1; iはnodes.length / 2 <; iは++){
ノード=ノード[i]は、
IF(ノード== NULL)を続けます。
node.left =ノード[2 * i]は、
node.right =ノード[2 * I + 1]。
}
戻りノード[1]。
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 [
38である
39
40
41は、
42で
43で
44れ
45
46で
47
48
49
50
51され
  、上記のコードが使用されている場合、あなただけがプロジェクトを作成するためのコードを使用するようにして、自分の作業コードにリンクする必要があります。MkTreeは、次のように公式ツリーにより与えられるフォーマットは、非常に単純なツリーで変換する静的関数を呼び出す:文字列str =「[3,9,20、 NULL、NULL、15,7]を」。

ツリーノードのノード= TreeNode.mkTree(STR)。

おすすめ

転載: www.cnblogs.com/kungfupanda/p/11223633.html