首页 > 代码库 > LeetCode 95. Unique Binary Search Trees II
LeetCode 95. Unique Binary Search Trees II
题目如下:
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。