文章目录 题目方法一:递归 题目 方法一:递归 class Solution { int[] num = null; public TreeNode constructMaximumBinaryTree(int[] nums) { num = nums; return myTree(0,num.length-1); } public TreeNode myTree( int begin , int end){ if(begin > end) return null;//递归出口 左区间下标>右区间下标 说明区间内无元素了 直接返回null int maxIndex = max(begin, end);//求区间最大值的下标 用来分割左右子树区间 TreeNode root = new TreeNode(num[maxIndex]);//区间最大值为作为根节点 root.left = myTree(begin,maxIndex-1);//构建左子树 root.right = myTree(maxIndex+1,end);//构建右子树 return root; } //求区间最大值的下标 public int max(int left,int right){ int max = -1; int index = -1; for(int i = left;i<=right;i++){ if(num[i] > max) { max = num[i]; index = i; } } return index; } }