LeetCode654、最大二叉树

1、题目描述

2、解答

第一次写法:


class Solution {
    
    
    public TreeNode constructMaximumBinaryTree(int[] nums) {
    
    
        return build(nums,0,nums.length-1);
    }
//start是数组起始索引,end为终止索引
    public TreeNode build(int[]nums,int start,int end){
    
    
        if(start>end) return null;
	//以当前数组最大值作为根节点
        int MAX = Integer.MIN_VALUE;
        int k=-1;
        for(int i=start;i<=end;i++){
    
    
            if(MAX < nums[i]){
    
     
                //记录其下标
                k = i;
                MAX = nums[i]; 
            }
        }
        TreeNode root = new TreeNode(MAX);
        //左边的数组构建左子树
        root.left = build(nums,start,k-1);
        //右边数组构建右子树
        root.right = build(nums,k+1,end); 
        return root;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44861675/article/details/114211768