LeetCode 95. Unique Binary Search Trees II
2017-04-15 11:12
465 查看
题目如下:
思路:
递归产生子树,感觉这题很经典。 容易出错的地方有:
(1) if(n<=0) 要判断,否则,n=0的测试结果是 [[]] ,而正确应该返回 []
(2) if (s > e) {res.add(null);} 这里不能直接{return null;}
本题代码:
ref : https://discuss.leetcode.com/topic/3079/a-simple-recursive-solution
Given an integer 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) if(n<=0) 要判断,否则,n=0的测试结果是 [[]] ,而正确应该返回 []
(2) if (s > e) {res.add(null);} 这里不能直接{return null;}
本题代码:
import java.util.ArrayList; import java.util.List; /** * Created by yuanxu on 17/4/13. */ public class DP95 { public static List<TreeNode> generateTrees(int n) { if (n <= 0) return new ArrayList<>(); return generateSubtrees(1, n); } private static List<TreeNode> generateSubtrees(int s, int e) { List<TreeNode> res = new ArrayList<TreeNode>(); if (s > e) { res.add(null); } for (int i=s; i<=e; ++i) { List<TreeNode> leftTrees = generateSubtrees(s, i-1); List<TreeNode> rightTrees = generateSubtrees(i+1, e); for (TreeNode left : leftTrees) { for (TreeNode right : rightTrees) { TreeNode root = new TreeNode(i); root.left = left; root.right = right; res.add(root); } } } return res; } static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } /** * @test */ public static void main(String args[]) { int n = 0; System.out.println(generateTrees(n).get(0).val); } }
ref : https://discuss.leetcode.com/topic/3079/a-simple-recursive-solution
相关文章推荐
- [leetcode] 95. Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- [leetcode] 95.Unique Binary Search Trees II
- leetcode 95. Unique Binary Search Trees II(dp)
- [LeetCode] 95. Unique Binary Search Trees II 唯一二叉搜索树 II
- Leetcode 95. Unique Binary Search Trees II及二叉树最大最小深度镜像树总结
- LeetCode 95. Unique Binary Search Trees II
- [leetcode] 95.Unique Binary Search Trees II
- [Leetcode]@python 95. Unique Binary Search Trees II
- [leetcode] 95. Unique Binary Search Trees II 解题报告
- 个人记录-LeetCode 95. Unique Binary Search Trees II
- LeetCode *** 95. Unique Binary Search Trees II
- leetcode - 95.Unique Binary Search Trees II
- Leetcode 95. Unique Binary Search Trees II
- [LeetCode] 95. Unique Binary Search Trees II & I
- leetcode 95. Unique Binary Search Trees II-分治算法|动态规划|卡特兰数
- 【LeetCode】95. Unique Binary Search Trees II
- [LeetCode] 95. Unique Binary Search Trees II
- 95. Unique Binary Search Trees II LeetCode
- leetcode 95. Unique Binary Search Trees II | Java最短代码实现