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

Leetcode_95 Unique Binary Search Trees II

2015-07-14 17:05 519 查看
Given 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

public  List<TreeNode>  generateTrees(int n) {
return generate(1, n);
}
private List<TreeNode> generate(int left, int right){
List<TreeNode> list = new ArrayList<TreeNode>();

if (left > right) {
list.add(null);
return list;
}
for(int i = left;i<=right;i++){
List<TreeNode> lefTreeNodes = generate(left, i-1);
List<TreeNode> rightTreeNodes = generate(i+1, right);

for(int m = 0;m<lefTreeNodes.size();m++){
for(int n = 0;n<rightTreeNodes.size();n++){
TreeNode treeNode = new TreeNode(i);
treeNode.left = lefTreeNodes.get(m);
treeNode.right = rightTreeNodes.get(n);
list.add(treeNode);
}
}
}
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: