LeetCode题解:Unique Binary Search Trees II
2015-10-02 20:01
681 查看
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的二叉搜索树所有表示
解决思路:思路和之前的差不多,只不过为了生成树,需要用动态规划来生成子树
代码:
““java
public class Solution {
public List generateTrees(int n) {
List[] result = new List[n + 1];
result[0] = new ArrayList();
result[0].add(null);
}
“`
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的二叉搜索树所有表示
解决思路:思路和之前的差不多,只不过为了生成树,需要用动态规划来生成子树
代码:
““java
public class Solution {
public List generateTrees(int n) {
List[] result = new List[n + 1];
result[0] = new ArrayList();
result[0].add(null);
for(int i = 1; i <= n; i++){ result[i] = new ArrayList<TreeNode>(); for(int j = 0; j < i; j++){ for(TreeNode nodeL : result[j]){ for(TreeNode nodeR : result[i - j - 1]){ TreeNode node = new TreeNode(j + 1); node.left = nodeL; node.right = clone(nodeR, j + 1); result[i].add(node); } } } } return result ; } private TreeNode clone(TreeNode node, int offset){ if(node == null){ return null; } TreeNode temp = new TreeNode(node.val + offset); temp.left = clone(node.left, offset); temp.right = clone(node.right, offset); return temp; }
}
“`
相关文章推荐
- HDU 5204 Rikka with sequence
- LeetCode题解:Unique Binary Search Trees
- hdu 4915 Parenthese sequence(模拟)2014多培训学校5现场
- Codeforces 85B. Embassy Queue【段树、馋】
- AndroidUI 布局动画-点九PNG技术
- AndroidUI 布局动画-点九PNG技术
- leetcode先刷_Unique Paths II
- UIDynamic 基础认识
- MIUI ROM适配之旅第四天——移植MIUI Framework
- MIUI ROM适配之旅第二天——准备工作
- MIUI ROM适配之旅第一天——认识Android手机
- ***N-Queens
- UI:KVO、KVC
- UVA - 1584 Circular Sequence
- pat1007Maximum Subsequence Sum (25)
- UIstoryboard
- leetcode 288: Unique Word Abbreviation
- NGUI点击事件的添加
- UGUI学习笔记4——UI Events,Event Triggers
- 分治法Devide-and 4000 -Conquer