中级农民
- 积分
- 106
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-11-1
- 最后登录
- 1970-1-1
|
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
请教一下,95题,solution如下。 那个base case为什么是start > end?如果只剩一个数,start == end是有可能的,想不明白为什么会start > end
- class Solution {
- public LinkedList<TreeNode> generate_trees(int start, int end) {
- LinkedList<TreeNode> all_trees = new LinkedList<TreeNode>();
- if (start > end) {
- all_trees.add(null);
- return all_trees;
- }
- // pick up a root
- for (int i = start; i <= end; i++) {
- // all possible left subtrees if i is choosen to be a root
- LinkedList<TreeNode> left_trees = generate_trees(start, i - 1);
- // all possible right subtrees if i is choosen to be a root
- LinkedList<TreeNode> right_trees = generate_trees(i + 1, end);
- // connect left and right trees to the root i
- for (TreeNode l : left_trees) {
- for (TreeNode r : right_trees) {
- TreeNode current_tree = new TreeNode(i);
- current_tree.left = l;
- current_tree.right = r;
- all_trees.add(current_tree);
- }
- }
- }
- return all_trees;
- }
- public List<TreeNode> generateTrees(int n) {
- if (n == 0) {
- return new LinkedList<TreeNode>();
- }
- return generate_trees(1, n);
- }
- }
复制代码
|
上一篇: 空间复杂度/内存的问题下一篇: 如何学习Java 内存管理与JVM
|