题目描述:
很显然要使用的是递归的方式来完成,需要注意的是,这里用的是索引,因为左右节点是以节点来区分的
递归还需要深入理解一下啊
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
return get(0, nums.length - 1, nums);
}
public TreeNode get(int start, int end, int [] nums){
if(start > end){
return null;
}
int max = getMax(nums, start, end);
TreeNode root = new TreeNode(nums[max]);
root.left = get(start, max-1, nums);
root.right = get(max+1, end, nums);
return root;
}
public int getMax(int [] nums,int start,int end){
int result = start;
for (int i = start + 1; i <= end; i++) {
if(nums[result] < nums[i]){
result = i;
}
}
return result;
}
}