Middle-题目64:95. Unique Binary Search Trees II

原创 2016年05月31日 16:34:32

题目原文:
Given n, generate all structurally unique BST’s (binary search trees) that store values 1…n.

For example,
Given n = 3, your program should return all 5 unique BST’s shown below.

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

题目大意:
给出n,输出节点值为1到n的所有二叉排序树。
题目分析:
使用分治法,分别令根节点为k,再递归生成1~k,k+1~n对应的二叉排序树列表,逐一加入到以k为根节点的列表中。
源码:(language:java)

public class Solution {
    public List<TreeNode> generateTrees(int n) {
        if(n==0) return new ArrayList<TreeNode>();
        return generateTrees(1, n);
    }

    private List<TreeNode> generateTrees(int start, int end){
        if(start>end) {
            List<TreeNode> list = new ArrayList<TreeNode>();
            list.add(null);
            return list;
        }
        if(start==end) {
            List<TreeNode> list = new ArrayList<TreeNode>();
            list.add(new TreeNode(start)); return list;
        }
        List<TreeNode> roots = new ArrayList<TreeNode>();
        for(int i=start;i<=end;i++){
            List<TreeNode> leftTrees = generateTrees(start, i-1);
            List<TreeNode> rightTrees = generateTrees(i+1, end);
            for(int j=0;j<leftTrees.size();j++){
                for(int k=0;k<rightTrees.size();k++){
                    TreeNode root = new TreeNode(i);
                    root.left = leftTrees.get(j);
                    root.right = rightTrees.get(k);
                    roots.add(root);
                }
            }

        }
        return roots;
    }
}

成绩:
2ms,beats 88.62%,众数3ms,53.26%
cmershen的碎碎念:
大概从这段时间的题目开始,独立完成已经有难度,代码和分析有很多会来源于百度到的各路大神的博客和discuss中,但都加以我自己的理解。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

相关文章推荐

leetcode_middle_98_95. Unique Binary Search Trees II

题意: 给一个数n,返回所有能存储1到n的二叉查找树。 分析: 这是个好题,应该考虑深度优先搜索或者动态规划。 递归好理解: 遍历1到n每个数做结点。 对于每一个根节点,将左边的结点能构造出的...

[Leetcode] 95. Unique Binary Search Trees II 解题报告

题目: Given an integer n, generate all structurally unique BST's (binary search trees) that store...

LeetCode 95: Unique Binary Search Trees II

Unique Binary Search Trees IIGiven n, generate all structurally unique BST’s (binary search trees) t...

算法分析与设计第五周习题:95. Unique Binary Search Trees II

与96题的对比:        95题是96题Unique Binary Search Trees的升级版,95题增加了构建出所有树的要求,而不仅仅是计算树的数量。对于96题,我们可以轻易得出树数量...

[LeetCode]95.Unique Binary Search Trees II

【题目】 Given n, generate all structurally unique BST's (binary search trees) that store values 1....

Leetcode 95. Unique Binary Search Trees II及二叉树最大最小深度镜像树总结

95. Unique Binary Search Trees IIDescriptionHintsSubmissionsSolutionsGiven an integer n, generate al...

Leetcode 95 Unique Binary Search Trees II

给出n,生成所有存储1-n共n个数的结构上不重复的二叉查找树。

95. Unique Binary Search Trees II

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For ...

LeetCode --- 95. Unique Binary Search Trees II

题目链接:Unique Binary Search Trees II Given n, generate all structurally unique BST's (binary search t...

95. Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST's (binary search trees) that store values...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)