【Leetcode】Unique Binary Search Trees II
2016-05-31 00:46
399 查看
题目链接:https://leetcode.com/problems/unique-binary-search-trees-ii/
题目:
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~n时,递归遍历,根结点大于左子树小于右子树。
算法:
题目:
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
思路:
当根结点分别为1~n时,递归遍历,根结点大于左子树小于右子树。
算法:
public List<TreeNode> generateTrees(int n) { if (n == 0) return null; return dsp(1, n); } public List<TreeNode> dsp(int start, int end) { List<TreeNode> res = new ArrayList<TreeNode>(); if (start > end) { res.add(null); return res; } for (int i = start; i <= end; i++) { List<TreeNode> left = dsp(start, i - 1); List<TreeNode> right = dsp(i + 1, end); for (TreeNode l : left) { for (TreeNode r : right) { TreeNode root = new TreeNode(i); root.left = l; root.right = r; res.add(root); } } } return res; }
相关文章推荐
- 【Leetcode】Range Sum Query 2D - Immutable
- easyUI入门的学习
- IOS--UINavigationBar修改背景色
- 关于Intellij IDEA菜单项中Compile、Make和Build的区别
- String,StringBuffer与StringBuilder的区别??
- EasyUI combobox 焦点处理
- 从字节码角度看String、StringBuffer、StringBuilder的不同
- UITableView-微博-cell等高的实现
- UITableView-微博-cell非等高的实现2
- UITableView 协议
- Key-Value Coding
- Key-Value Observing
- 【欧拉函数表】POJ2478-Farey Sequence
- OC中限制UITextView的最大字数的实现
- Creational Patterns Part 4/5: Builder Pattern
- 拖动UIScrollView时的delegate调用调用顺序
- UINavigationController和UITabBarController合用
- 导入错误,Gradle version 2.10 is required. Current version is 2.8
- PrimusUI
- UIView属性的动画