leetcode 108及び109 leetcode

//思考は:あなたはどこそのポイントを知っていればたまにああ、タイトルのために、このようなこれら二つの質問、バイナリ検索ツリーに整然と配列として、非常にシンプルになり、

いくつかのポイントがあります。

1.バイナリ検索ツリー:ノードの場合、ノードは、それが正しいノードにそのことを左よりも少ないのですされ、それよりも大きい場合、これは二分探索木の性質である、だから我々は結論を引き出すことができます。ツリーを走査するために、私たちは、アレイは、前順が最初の左ノードであるので、小から大までに注文する必要があります--->ルート----->右ノード、それが注文されています。

二分探索木のために、我々は簡単に2を命じた配列に変換し、それを順番にすることができますか?二分探索木の規則的な配列を変換する方法?

我々はルート、左部分木の左されたアレイのルート要素で、変換後のルートを見つけた場合、質問になり、右に、右再帰は左に再帰的にダウンした後、右のサブツリーです彼らは右のノードがエンド終了で条件が同様nullを返し、間隔の要素が存在していないことが判明している、このように最終的には再帰的で、床に残されたルートノードを取得します。

ルートキー3.は、それが誰であるのですか?

私は知らない、彼らは、ルートノードとして対応する要素の中間点で、私は少しの友人が私に伝えるために歓迎のメッセージを知っているためにそこにあるかを証明するために知っていないと言います。

この考え方によると、

コードは以下の通りであります:

1  / ** 
2  分木のノードのための*の定義。
3  *パブリッククラスツリーノード{
 4  * int型のval;
5  *のTreeNodeは左。
6  *のTreeNodeは正しいです。
7  *ツリーノード(INT X){ヴァル= X。}
 8  *}
 9   * / 
10  クラスソリューション{
 11      公共のTreeNode sortedArrayToBST(INT [] NUMS){
 12          であれば(NUMS == NULL || nums.length == 0 13              リターン ヌル14          リターンヘルパー(NUMS、0、nums.length-1);
15      }
 16      公共のTreeNodeヘルパー(INT [] NUMS、int型の L、INT R)
 17      {
 18          場合(L> R)
 19              リターン ヌル20          INTミッド= 1 +(RL)/ 2 21          ツリーノードのルート= 新しいツリーノード(NUMS [中間])。
22          root.left =ヘルパー(NUMS、L、ミッド1 )。
23          root.right =ヘルパー(NUMS、ミッド+ 1 、R)。
24          リターンルート。
25      }
 26 }

おすすめ

転載: www.cnblogs.com/cold-windy/p/11779244.html