zoukankan      html  css  js  c++  java
  • 最大二叉树--p654--递归构造

    与p106相似

    package tree;
    
    import sun.reflect.generics.tree.Tree;
    
    /**
     * 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
    
     二叉树的根是数组中的最大元素。
     左子树是通过数组中最大值左边部分构造出的最大二叉树。
     右子树是通过数组中最大值右边部分构造出的最大二叉树。
    
     通过给定的数组构建最大二叉树,并且输出这个树的根节点。
    
     Example 1:
    
     输入: [3,2,1,6,0,5]
     输入: 返回下面这棵树的根节点:
    
     6
     /   
     3     5
         /
     2  0
     
     1
    
     注意:
    
     给定的数组的大小在 [1, 1000] 之间。
    
    
     */
    public class p654 {
        public TreeNode constructMaximumBinaryTree(int[] nums) {
                if(nums.length==0)return null;
                if(nums.length==1)return new TreeNode(nums[0]);
                TreeNode root=null;
                root=buildTree(nums);
                return root;
        }
    
        public TreeNode buildTree(int []nums){
            if(nums.length==0)return null;
            int i,max=0,maxIndex=-1;
            for(i=0;i<nums.length;i++){     //找到最大值
                if(max<nums[i]){
                    max=nums[i];
                    maxIndex=i;
                }
            }
            TreeNode node=new TreeNode(nums[maxIndex]);
            //左子树数组
            int leftTree[]=new int[maxIndex];
            System.arraycopy(nums,0,leftTree,0,leftTree.length);
            //右子树数组
            int rightTree[]=new int[nums.length-maxIndex-1];
            System.arraycopy(nums,maxIndex+1,rightTree,0,rightTree.length);
            node.left=buildTree(leftTree);
            node.right=buildTree(rightTree);
            return node;
        }
    }
  • 相关阅读:
    matlab中的rng函数
    重装系统的两种方法
    如何用cmd指令清除U盘的PE分区
    python缩进
    matlab处理dat数据
    word空格后整体移动的问题
    窗函数
    去除信号中的直流分量
    第07组 团队Git现场编程实战
    第二次结对编程作业
  • 原文地址:https://www.cnblogs.com/ming-szu/p/8995539.html
Copyright © 2011-2022 走看看