【LeetCode-中等题】654.最大二叉树

文章目录

    • 题目
    • 方法一:递归

题目

【LeetCode-中等题】654.最大二叉树_第1张图片

方法一:递归

【LeetCode-中等题】654.最大二叉树_第2张图片

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;
    }
}

你可能感兴趣的:(力扣,#,中等题,leetcode,算法,职场和发展)