zoukankan      html  css  js  c++  java
  • 95. Unique Binary Search Trees II

        /*
         * 95. Unique Binary Search Trees II
         * 2016-5-14 By Mingyang
         * 分成两个函数来写,另外一个函数写满起点到终点
         * 这个题目自己写的代码很有收获
         * 1.最开始的判断n<1必须加上,不然会报错,Input:0 Output:[[]] Expected:[]
         * 2.if (start > end) 
         *    {list.add(null);
         *            return list;
         * 这步很重要,最关键的串联一步,如果没有那就返回null,直接串联
         */
        public List<TreeNode> generateTrees(int n) {
               List<TreeNode> res=new ArrayList<TreeNode>();
               if(n<1)//这不能少
                return res;
            return generateTrees(1, n);
        }
        public List<TreeNode> generateTrees(int start, int end) {
            List<TreeNode> list = new LinkedList<TreeNode>();
            if (start > end) {
            //最开始我也错了,直接返回list,必须返回null,不然人家才能串联起来,node.left=null;
                list.add(null);
                return list;
            }
            for (int i = start; i <= end; i++) {
                List<TreeNode> lefts = generateTrees(start, i - 1);//以i作为根节点,左子树由[1,i-1]构成
                List<TreeNode> rights = generateTrees(i + 1, end);//右子树由[i+1, n]构成
                for (TreeNode left : lefts) {//左边和右边分别返回了一个list,每个值就是一个TreeNode,就代表一种可能性
                    for (TreeNode right : rights) {
                        TreeNode node = new TreeNode(i);
                        node.left = left;
                        node.right = right;
                        list.add(node);//存储所有可能行
                    }
                }
            }
            return list;
        }
  • 相关阅读:
    归并排序
    快速排序
    UNION与UNION ALL的区别
    聚集索引和非聚集索引
    设计模式之抽象工厂模式
    list中map 的value值时间排序
    webmvc 拦截器 允许跨域 跨域问题 sessionid不一样
    redis 主从复制 和集群
    maven打包
    bcprov-jdk15on包用于创建CSR(证书请求)
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5496827.html
Copyright © 2011-2022 走看看