Leetcode 654.最大二叉樹
阿新 • • 發佈:2019-02-18
src 返回 pub [] leetcode 最大值 並且 nbsp 重復元素
最大二叉樹
給定一個不含重復元素的整數數組。一個以此數組構建的最大二叉樹定義如下:
- 二叉樹的根是數組中的最大元素。
- 左子樹是通過數組中最大值左邊部分構造出的最大二叉樹。
- 右子樹是通過數組中最大值右邊部分構造出的最大二叉樹。
通過給定的數組構建最大二叉樹,並且輸出這個樹的根節點。
Example 1:
輸入: [3,2,1,6,0,5]
輸入: 返回下面這棵樹的根節點:
註意:
- 給定的數組的大小在 [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 returnmax_i; 21 } 22 }
Leetcode 654.最大二叉樹