*LeetCode-Unique Binary Search Trees II
2015-09-25 04:47
381 查看
比第一个题要求高 不但要给出个数 是要给出所有可能的树
每次确定一个root 然后 (1,root -1)就是左子树 (root+1,n)就是右子树
注意边界条件 start > end的时候要返回一个list 里面是一个null node 而不能是一个null list 因为这种情况是这个树没有左子或者右子 然后就指向null
public class Solution {
public List<TreeNode> generateTrees(int n) {
return helper ( 1, n );
}
public List<TreeNode> helper ( int start, int end ){
List<TreeNode> res = new ArrayList<TreeNode>();
if ( start > end ){
res.add(null);
return res;
}
if ( start == end ){
TreeNode node = new TreeNode ( start );
res.add( node );
return res;
}
List<TreeNode> left, right;
for ( int i = start; i <= end; i ++ ){
left = helper(start, i - 1);
right = helper ( i + 1, end );
for ( TreeNode lroot : left ){
for ( TreeNode rroot : right ){
TreeNode root = new TreeNode ( i );
root.left = lroot;
root.right = rroot;
res.add( root );
}
}
}
return res;
}
}
每次确定一个root 然后 (1,root -1)就是左子树 (root+1,n)就是右子树
注意边界条件 start > end的时候要返回一个list 里面是一个null node 而不能是一个null list 因为这种情况是这个树没有左子或者右子 然后就指向null
public class Solution {
public List<TreeNode> generateTrees(int n) {
return helper ( 1, n );
}
public List<TreeNode> helper ( int start, int end ){
List<TreeNode> res = new ArrayList<TreeNode>();
if ( start > end ){
res.add(null);
return res;
}
if ( start == end ){
TreeNode node = new TreeNode ( start );
res.add( node );
return res;
}
List<TreeNode> left, right;
for ( int i = start; i <= end; i ++ ){
left = helper(start, i - 1);
right = helper ( i + 1, end );
for ( TreeNode lroot : left ){
for ( TreeNode rroot : right ){
TreeNode root = new TreeNode ( i );
root.left = lroot;
root.right = rroot;
res.add( root );
}
}
}
return res;
}
}
相关文章推荐
- Easyui Datagrid rownumbers行号四位、五位显示不完全的解决办法
- iOS开发——高级篇——UIDynamic 物理引擎
- 接口测试工具Soapui5.1.2参数化之Properties20150924
- 破坏神(1)NGUI实现首个界面
- easyui升级到1.43之后,编辑行的高度就固定了 (变矮了)
- easyui分类显示默认折叠
- UVA1423Guess (dfs,bfs拓扑排序)
- 【 UIImageView图片控件】
- STL系列之三 queue 单向队列
- Flume 1.6.0 User Guide
- android开发步步为营之79:通过源码分析Looper,Handler,MessageQueue之间的关系
- NGUI 3D菜单
- js中return、return true、return false的区别
- ZOJ.2421 Recaman's Sequence【暴力打表】 2015/09/24
- UI一揽子计划 24 (MVC、通知、)
- UI一揽子计划 23 (动画的使用场景、UIView动画、CGAffineTransform2D仿射变换、CALayer、CAAnimation、)
- hdu1159 Common Subsequence (最长公共子串)
- UI Overview
- jquey 92 json.parse json.stringify
- IOS每天15个注意点系列之UI-tableView