前言
找最大值构成树,递归
题目
源码
/**
* 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) {
if (nums==null){
return null;
}
return bulidTree(nums,0,nums.length-1);
}
public TreeNode bulidTree(int[]nums,int l,int r){
if(l>r){
return null;
}
int max_i=l;
for(int i=l;i<=r;i++){//找最大值
if(nums[i]>nums[max_i]){
max_i=i;
}
}
TreeNode node=new TreeNode(nums[max_i]);
node.left=bulidTree(nums,l,max_i-1);
node.right=bulidTree(nums,max_i+1,r);
return node;
}
}