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

来源:互联网 发布:淘宝开店推广费用 编辑:程序博客网 时间:2024/05/29 14:52

题目原文:
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中,但都加以我自己的理解。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子识字少不愿意读书怎么办 夏天孩子不愿意喝水尿量少黄怎么办 孩子不喜欢与别人沟通怎么办 异地恋他爸妈不同意怎么办 刚装修家里很臭怎么办 狗弄得家里很臭怎么办 抑郁症患者不愿意回家见家人怎么办 属猴的人养猫怎么办 对方电话拉黑我怎么办 手机号码换了淘宝账号怎么办 扣扣号有密码无法加好友怎么办 扣扣帐号忘记了怎么办 扣扣帐号被冻结怎么办 xp忘了开机密码怎么办 手机怎样知道好友qq密码怎么办 找回微信密码申诉失败怎么办 若微信号被盗钱怎么办 微信号被倒了怎么办 微信支付密码忘了怎么办 微信钱包密码忘了怎么办 忘记qq锁屏密码怎么办 微信里保密柜密码忘记了怎么办 qq漫游记录密码忘了怎么办 当你很烦的时候怎么办 当你烦的时候怎么办 面对刁蛮不讲理的老婆怎么办 老是想以前的事怎么办 被心机婊陷害了怎么办 分手了还被骚扰怎么办 苹果手机屏幕出现冷暖屏怎么办 我感觉媳妇不漂亮怎么办 90后赚不到钱怎么办 处对象感觉好累怎么办 谈朋友感觉好累怎么办 家庭条件不好娶老婆难办怎么办? 异地恋闹矛盾了怎么办 有人威胁要杀我全家怎么办 分手了借我的钱怎么办 脸打架打肿了怎么办 人家不加我qq好友怎么办 一个好友被删了怎么办