Unique Binary Search Trees II 解答
2015-09-21 02:36
555 查看
Question
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
Solution
Key to the solution is to divide the problem into two sub-problems. Unlike "Unique Binary Search Trees", this problem is NP-hard./** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<TreeNode> generateTrees(int n) { return generateTreesHelper(1, n); } private List<TreeNode> generateTreesHelper(int start, int end) { List<TreeNode> result = new ArrayList<TreeNode>(); if (start > end) { result.add(null); return result; } for (int i = start; i <= end; i++) { List<TreeNode> lefts = generateTreesHelper(start, i - 1); List<TreeNode> rights = generateTreesHelper(i + 1, end); for (TreeNode left : lefts) { for (TreeNode right : rights) { TreeNode tmp = new TreeNode(i); tmp.left = left; tmp.right = right; result.add(tmp); } } } return result; } }
相关文章推荐
- OS每天15个注意点系列之UI-ScrollView
- UI篇—懒加载
- PHP中include和require的区别详解
- java中将1转换为True的简单方法
- 在UIScrollView中使用Autolayout布局(2)
- IOS UIBezierPath使用方法详解
- RequireJS学习笔记(转)
- ARC环境下,自动释放UIViewController...
- 【WPF学习】WPF、WinForm(C#)多线程编程并更新界面(UI)/子线程更新主界面方式
- ios学习笔记——UIScrollView
- Android UI界面shape的用法
- 扩展easyui 的表单验证
- NGUI 源码分析- AnchorPoint
- hdoj2670Girl Love Value【01背包】
- 八位 UUID
- uinty3d导入错误问题解决
- iOS 【UIKit-按钮移动操作】
- Longest Consecutive Sequence——Leetcode
- leetcode - N-Queens
- 最小生成树 POJ 3625Building Roads解题报告