最大二叉樹

2021-10-19 11:00:33 字數 1049 閱讀 9783

題目大意:總是按照當前陣列或者子陣列中的元素值的最大值作為根節點,依次建立一顆二叉樹。

輸入:nums =[3

,2,1

,6,0

,5]輸出:[6,

3,5,null,2,

0,null,null,1]

解釋:遞迴呼叫如下所示:-[

3,2,

1,6,

0,5] 中的最大值是 6 ,左邊部分是 [3,

2,1] ,右邊部分是 [0,

5] 。

-[3,2,1

] 中的最大值是 3 ,左邊部分是 [

] ,右邊部分是 [2,

1] 。

- 空陣列,無子節點。

-[2,1

] 中的最大值是 2 ,左邊部分是 [

] ,右邊部分是 [

1] 。

- 空陣列,無子節點。

- 只有乙個元素,所以子節點是乙個值為 1 的節點。

-[0,5

] 中的最大值是 5 ,左邊部分是 [

0] ,右邊部分是 [

] 。 - 只有乙個元素,所以子節點是乙個值為 0 的節點。

- 空陣列,無子節點。

解題思路:首先是建立乙個可以尋求其中的最大陣列元素的下標,然後按照下標來進行分割後,分成兩個部分進行遞迴,分別對應於左右子樹來建立對應的子樹。遞迴的方式實現如下:

class

solution

treenode*

construct

(vector<

int> nums,

int l,

int r)

intmax

(vector<

int> nums,

int l,

int r)

}return max_i;}}

;

新年快樂,這些題目第一時間拿到的時候還是無法直接找到很好的解題思路,需要更加多次的練習才可以完成。

654 最大二叉樹

給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。example 1 輸入 3,2,1,6,...

最大二叉樹II

最大樹定義 乙個樹,其中每個節點的值都大於其子樹中的任何其他值。給出最大樹的根節點 root。就像之前的問題那樣,給定的樹是從表 a root construct a 遞迴地使用下述 construct a 例程構造的 如果 a 為空,返回 null 否則,令 a i 作為 a 的最大元素。建立乙個...

654 最大二叉樹

題目描述 給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。示例 給定的陣列的大小在 1,1...