654 最大二叉樹

2021-10-09 07:01:21 字數 1065 閱讀 5351

題目描述:

給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下:

二叉樹的根是陣列中的最大元素。

左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。

右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。

通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。

示例 :

給定的陣列的大小在 [1, 1000] 之間。

方法1:

主要思路:

(1)使用遞迴建立樹結構,每次在陣列中找出給定範圍內的最大值,使用該最大值建立當前根節點,再以該節點左邊的結點建立其左子樹,該結點右邊的結點建立其右子樹,最後返回根節點即可;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//找出當前範圍內的最大值的位置

int max_index=left;

for(

int i=left+

1;i<=right;

++i)

}//以最大值建立當前根節點

treenode* root=

newtreenode

(nums[max_index]);

//以最大值左右兩邊的各自範圍內的值,建立左右子樹

root-

>left=

dfs(nums,left,max_index-1)

; root-

>right=

dfs(nums,max_index+

1,right)

;//返回根節點

return root;

} treenode*

constructmaximumbinarytree

(vector<

int>

& nums)

};

654 最大二叉樹

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

654 最大二叉樹

給定乙個不含重複元素的整數陣列 nums 乙個以此陣列直接遞迴構建的 最大二叉樹 定義如下 二叉樹的根是陣列 nums 中的最大元素。左子樹是通過陣列中 最大值左邊部分 遞迴構造出的最大二叉樹。右子樹是通過陣列中 最大值右邊部分 遞迴構造出的最大二叉樹。返回有給定陣列 nums 構建的 最大二叉樹 ...

654 最大二叉樹

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