654の最大バイナリツリー
重複なし付き整数配列を指定。このアレイ上の最大のツリー構築は、以下のように定義されます。
- ルートは、アレイ内の最大数です。
- 左サブツリーが最大数で割った左部分のサブアレイから構成最大の木です。
- 右サブツリーが最大数で割っ右側サブアレイから構成最大の木です。
所与のアレイ出力することによって、このツリーのルートノードを最大ツリーを構築します。
-------------------------------------------------- -------------------------------------------------- --------------
与えられた整数の配列が繰り返されていません。以下を確立し、アレイ上に定義された最大の木:
- ルートは、アレイの最大数です。
- 左サブツリーは、左側の最大の木から得られたサブアレイの最大数で分割されます。
- 右サブツリーは最大数で割ったサブアレイに対する権利の最大のツリー構造部です。
所定のアレイ構成ツリーとツリーのルートノードの最大出力を通ります。
-------------------------------------------------- -------------------------------------------------- --------------
例1:
入力:[3,2,1,6,0,5] 出力:以下のツリーを示すツリーのルートノードを返す: 6 / \ 3 5 \ / 2 0 \ 1
注意:
- 指定された配列のサイズは、範囲[1,1000]であろう。
対象は、解決策を考えるのは簡単ですが、難しいことではありません。
- アレイの最大値であるルートノードを作成します
- アレイの左半分の最大値は、左のルートノードを作成するために、左ノード
- アレイの右半分の最大値は、ルートノードの右ノードの右ノードを作成します
- 再帰以上の操作
#バイナリツリーノードのための定義。 #クラスの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]
。