• Java实现 LeetCode 654 最大二叉树(递归)


    654. 最大二叉树

    给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:

    二叉树的根是数组中的最大元素。
    左子树是通过数组中最大值左边部分构造出的最大二叉树。
    右子树是通过数组中最大值右边部分构造出的最大二叉树。
    通过给定的数组构建最大二叉树,并且输出这个树的根节点。

    示例 :

    输入:[3,2,1,6,0,5]
    输出:返回下面这棵树的根节点:

          6
        /   
       3     5
            / 
         2  0   
           
            1
    

    提示:

    给定的数组的大小在 [1, 1000] 之间。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
         //寻找l到r区域中的最大值索引
    	public int max(int[] nums,int l,int r){
    		int max_i = l;
    		for(int i=l;i<r;i++){
    			if(nums[max_i] < nums[i]){
    				max_i = i;
    			}
    		}
    		return max_i;
    	}
        public TreeNode construct(int nums[] ,int l,int r){
    		if(l == r) return null;
    		int max_i = max(nums,l,r);
    		TreeNode root = new TreeNode(nums[max_i]);
    		root.left = construct(nums, l, max_i);
    		root.right = construct(nums, max_i+1, r);
    		return root;
    	}
        public TreeNode constructMaximumBinaryTree(int[] nums) {
    		return construct(nums, 0, nums.length);
    	}
    }
    
  • 相关阅读:
    连接数据库
    单行函数
    最小生成树
    hdu 1018
    组合 母函数 hdu 1171
    石子合并
    hdu 1047
    java 小综合
    java 声音处理
    并查集 1213
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946312.html
Copyright © 2020-2023  润新知