1. 程式人生 > >Leetcode 654.最大二叉樹

Leetcode 654.最大二叉樹

src 返回 pub [] leetcode 最大值 並且 nbsp 重復元素

最大二叉樹

給定一個不含重復元素的整數數組。一個以此數組構建的最大二叉樹定義如下:

  1. 二叉樹的根是數組中的最大元素。
  2. 左子樹是通過數組中最大值左邊部分構造出的最大二叉樹。
  3. 右子樹是通過數組中最大值右邊部分構造出的最大二叉樹。

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

Example 1:

輸入: [3,2,1,6,0,5]

輸入: 返回下面這棵樹的根節點:

技術分享圖片

註意:

  1. 給定的數組的大小在 [1, 1000] 之間。

技術分享圖片

 1 public class Solution {
 2     public TreeNode constructMaximumBinaryTree(int
[] nums) { 3 return construct(nums, 0, nums.length); 4 } 5 public TreeNode construct(int[] nums, int l, int r) { 6 if (l == r) 7 return null; 8 int max_i = max(nums, l, r); 9 TreeNode root = new TreeNode(nums[max_i]); 10 root.left = construct(nums, l, max_i);
11 root.right = construct(nums, max_i + 1, r); 12 return root; 13 } 14 public int max(int[] nums, int l, int r) { 15 int max_i = l; 16 for (int i = l; i < r; i++) { 17 if (nums[max_i] < nums[i]) 18 max_i = i; 19 } 20 return
max_i; 21 } 22 }

技術分享圖片

Leetcode 654.最大二叉樹