/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public TreeNode constructMaximumBinaryTree(int[] nums) { return find(nums,0,nums.length); } public TreeNode find(int[]nums,int leftIndex,int rightIndex){ if(rightIndex-leftIndex<1){ return null; } if(rightIndex-leftIndex==1) return new TreeNode(nums[leftIndex]); int index=leftIndex; int max=nums[index]; for(int i=leftIndex+1;i<rightIndex;i++){ if(nums[i]>max){ max=nums[i]; index=i; } } TreeNode node=new TreeNode(max); node.left=find(nums,leftIndex,index); node.right=find(nums,index+1,rightIndex); return node; } }