解题思路:

构造二叉树一定要用前序

中左右,先有中间节点,才有左右节点

区间左闭右开

注意递归终止条件

class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return buildHelper(nums, 0, nums.length);
    }

    public TreeNode buildHelper(int[] nums, int start, int end) {
        if (end - start < 1) return null;
        if (end - start == 1) return new TreeNode(nums[start]);
        
        int max = 0;
        int index = 0;
        for (int i = start; i < end; i++) {
            if (max < nums[i]) {
                max = nums[i];
                index = i;
            }
        }
        TreeNode root = new TreeNode(max);

        root.left = buildHelper(nums, start, index);
        root.right = buildHelper(nums, index + 1, end);
        return root;
    }
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部