Middle-题目64:95. Unique Binary Search Trees II
2016-05-31 16:34
387 查看
题目原文:
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.
题目大意:
给出n,输出节点值为1到n的所有二叉排序树。
题目分析:
使用分治法,分别令根节点为k,再递归生成1~k,k+1~n对应的二叉排序树列表,逐一加入到以k为根节点的列表中。
源码:(language:java)
成绩:
2ms,beats 88.62%,众数3ms,53.26%
cmershen的碎碎念:
大概从这段时间的题目开始,独立完成已经有难度,代码和分析有很多会来源于百度到的各路大神的博客和discuss中,但都加以我自己的理解。
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中,但都加以我自己的理解。
相关文章推荐
- hdu 2604 Queuing
- ERROR ITMS-9000: “Redundant Binary Upload. There already exists a binary upload with build version '
- Middle-题目61:63. Unique Paths II
- 02-线性结构3 Pop Sequence
- UI 如何制作配色色卡
- iOS开发之--UITextField属性
- 用编程的方式开发UI界面
- 控件类——UIControl(其子类、属性)
- PxCook像素大厨,UI设计师标注切图的利器
- UITextField —— 键盘弹出视图上移
- java 通过request获取ip 在通过ip获取地址
- django不要设置datetime字段auto_now=True
- 控件类——Button、UIControlState状态、title及其属性
- Middle-题目44:334. Increasing Triplet Subsequence
- 线程加载数据后的ui线程刷新实现
- HBuilder工作空间修改
- Java LinkedBlockingQueue 分析
- Property List Programming Guide(一)
- Middle-题目33:300. Longest Increasing Subsequence
- 利用spt_values求2个时间段内所有的日期。主要用于关联数据。