题目描述

654. Maximum Binary Tree(最大二叉树)

方法思路

class Solution {
    //Runtime: 5 ms, faster than 100.00%
    //Memory Usage: 39.9 MB, less than 56.46%
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        TreeNode root = constructMBT_Helper(nums, 0, nums.length - 1);
        return root;
    }
    public TreeNode constructMBT_Helper(int[] nums, int start, int end){
        if(start > end) return null;
        if(start == end) return new TreeNode(nums[start]);
        int index = findMaxIndex(nums, start, end);
        TreeNode root = new TreeNode(nums[index]);
        root.left = constructMBT_Helper(nums, start, index - 1);
        root.right = constructMBT_Helper(nums, index + 1, end);
        return root;
    }
    public int findMaxIndex(int[] nums, int start, int end){
        int index = start, max = nums[start];
        for(int i = start; i <= end; i++){
            if(max < nums[i]){
                max = nums[i];
                index = i;
            }
        }
        return index;
    }
}

相关文章: