1、题目描述
2、解答
第一次写法:
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
return build(nums,0,nums.length-1);
}
//start是数组起始索引,end为终止索引
public TreeNode build(int[]nums,int start,int end){
if(start>end) return null;
//以当前数组最大值作为根节点
int MAX = Integer.MIN_VALUE;
int k=-1;
for(int i=start;i<=end;i++){
if(MAX < nums[i]){
//记录其下标
k = i;
MAX = nums[i];
}
}
TreeNode root = new TreeNode(MAX);
//左边的数组构建左子树
root.left = build(nums,start,k-1);
//右边数组构建右子树
root.right = build(nums,k+1,end);
return root;
}
}