Leetcodeブラシのタイトル・ノート(A)

654の最大バイナリツリー

重複なし付き整数配列を指定。このアレイ上の最大のツリー構築は、以下のように定義されます。

  1. ルートは、アレイ内の最大数です。
  2. 左サブツリーが最大数で割った左部分のサブアレイから構成最大の木です。
  3. 右サブツリーが最大数で割っ右側サブアレイから構成最大の木です。

所与のアレイ出力することによって、このツリーのルートノードを最大ツリーを構築します。

-------------------------------------------------- -------------------------------------------------- --------------

与えられた整数の配列が繰り返されていません。以下を確立し、アレイ上に定義された最大の木:

  1. ルートは、アレイの最大数です。
  2. 左サブツリーは、左側の最大の木から得られたサブアレイの最大数で分割されます。
  3. 右サブツリーは最大数で割ったサブアレイに対する権利の最大のツリー構造部です。

所定のアレイ構成ツリーとツリーのルートノードの最大出力を通ります。

-------------------------------------------------- -------------------------------------------------- --------------

例1:

入力:[3,2,1,6,0,5] 
出力:以下のツリーを示すツリーのルートノードを返す:

      6 
    / \ 
   3 5 
    \ / 
     2 0    
       \ 
        1

 

注意:

  1. 指定された配列のサイズは、範囲[1,1000]であろう。

対象は、解決策を考えるのは簡単ですが、難しいことではありません。

  1. アレイの最大値であるルートノードを作成します
  2. アレイの左半分の最大値は、左のルートノードを作成するために、左ノード
  3. アレイの右半分の最大値は、ルートノードの右ノードの右ノードを作成します
  4. 再帰以上の操作
#バイナリツリーノードのための定義。
#クラスのTreeNode: デフ__init __(自己、X):
#self.val = X 
#self.left =なし
#self.right =なし

クラスソリューション:
    デフconstructMaximumBinaryTree(自己、NUMS:リスト[INT]) - >のTreeNode:
        NUMS == []の場合:
            戻りなし
        指数= nums.index(MAX(NUMS))
        ルート=ツリーノード(MAX(NUMS))
        root.left = self.constructMaximumBinaryTree(NUMS [:インデックス])
        root.right = self.constructMaximumBinaryTree (NUMS [インデックス+ 1])
        戻りルート

  

二つのバイナリ検索ツリーに1305すべての要素

 

 

2二分探索木を考える  root1 と  root2

入ったリストを返します  すべての整数  から  両方のツリーが  昇順にソートします。

 

例1:

入力:ROOT1 = [2,1,4]、root2 = [1,0,3] 
出力:[0,1,1,2,3,4]

例2:

入力:ROOT1 = [0、-10,10]、root2 = [5,1,7,0,2] 
出力:[-10,0,0,1,2,5,7,10]

例3:

入力:ROOT1 = []、root2 = [5,1,7,0,2] 
出力:[0,1,2,5,7]

例4:

入力:ROOT1 = [0、-10,10]、root2 = [] 
出力:[-10,0,10]

例5:

入力:ROOT1 = [1、NULL、8]、root2 = [8,1] 
出力:[1,1,8,8]

 

制約:

  • 各ツリーは、最大であり  5000 、ノード。
  • 各ノードの値が間にあります  [-10^5, 10^5]

 

おすすめ

転載: www.cnblogs.com/baiyunwanglai/p/12153983.html
おすすめ