zoukankan      html  css  js  c++  java
  • LeetCode——最大二叉树

    Q:给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
    二叉树的根是数组中的最大元素。
    左子树是通过数组中最大值左边部分构造出的最大二叉树。
    右子树是通过数组中最大值右边部分构造出的最大二叉树。
    通过给定的数组构建最大二叉树,并且输出这个树的根节点。

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

          6
        /   
       3     5
            / 
         2  0   
           
            1
    

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

    A:
    遇树递归

        public TreeNode constructMaximumBinaryTree(int[] nums) {
            if(nums.length == 0)
                return null;
            if(nums.length == 1)
                return new TreeNode(nums[0]);
            int max = nums[0];
            int maxIndex = 0;
            for(int i=0;i<nums.length;i++){
                if(nums[i]>max){
                    max = nums[i];
                    maxIndex = i;
                }
            }
            TreeNode root = new TreeNode(max);
            root.left = constructMaximumBinaryTree(Arrays.copyOfRange(nums, 0, maxIndex));
            root.right = constructMaximumBinaryTree(Arrays.copyOfRange(nums,maxIndex+1, nums.length));
            return root;
        }
    
  • 相关阅读:
    使用shape来定义控件的一些显示属性
    Button颜色选择器进阶
    android用于打开各种文件的intent
    虚拟机操作
    二维码生成与读取
    input框只能输入整数
    实现FF背景透明,文字不透明
    打日志
    多选框
    时间戳
  • 原文地址:https://www.cnblogs.com/xym4869/p/13762694.html
Copyright © 2011-2022 走看看