您的位置:首页 > 产品设计 > UI/UE

lintcode-medium-Unique Binary Search Trees II

2016-04-07 12:48 465 查看
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.

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


/**
* Definition of TreeNode:
* public class TreeNode {
*     public int val;
*     public TreeNode left, right;
*     public TreeNode(int val) {
*         this.val = val;
*         this.left = this.right = null;
*     }
* }
*/
public class Solution {
/**
* @paramn n: An integer
* @return: A list of root
*/
public List<TreeNode> generateTrees(int n) {
// write your code here

return generateTrees(1, n);
}

public List<TreeNode> generateTrees(int start, int end){
List<TreeNode> res = new ArrayList<TreeNode>();

if(start > end){
res.add(null);
return res;
}

if(start == end){
res.add(new TreeNode(start));
return res;
}

for(int mid = start; mid <= end; mid++){
List<TreeNode> left = generateTrees(start, mid - 1);
List<TreeNode> right = generateTrees(mid + 1, end);

for(TreeNode left_child: left){
for(TreeNode right_child: right){
TreeNode root = new TreeNode(mid);
root.left = left_child;
root.right = right_child;
res.add(root);
}
}

}

return res;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: