题目
法1:递归
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
TreeNode root = build(nums, 0, nums.length - 1);
return root;
}
public TreeNode build(int[] nums, int start, int end) {
if (start > end) {
return null;
}
if (start == end) {
return new TreeNode(nums[start]);
}
int maxInx = start;
int maxVal = nums[start];
for (int i = start; i <= end; ++i) {
if (nums[i] > nums[maxInx]) {
maxInx = i;
maxVal = nums[i];
}
}
TreeNode root = new TreeNode(maxVal);
root.left = build(nums, start, maxInx - 1);
root.right = build(nums, maxInx + 1, end);
return root;
}
}