unique binary search II 这题目recursive解法可以么?复杂度是多少?# JobHunting - 待字闺中
T*7
1 楼
unique binary search II 这题目recursive解法可以么?复杂度是多少?
import java.util.ArrayList;
import java.util.List;
public class T95 {
public List generateTrees(int n) {
return genTrees(1,n);
}
public List genTrees (int start, int end)
{
List list = new ArrayList();
if(start>end)
{
list.add(null);
return list;
}
if(start == end){
list.add(new TreeNode(start));
return list;
}
List left,right;
for(int i=start;i<=end;i++)
{
left = genTrees(start, i-1);
right = genTrees(i+1,end);
for(TreeNode lnode: left)
{
for(TreeNode rnode: right)
{
TreeNode root = new TreeNode(i);
root.left = lnode;
root.right = rnode;
list.add(root);
}
}
}
return list;
}
public static void main(String[] args){
T95 t95 = new T95();
List l = new ArrayList<>();
l = (t95.generateTrees(3));
for(TreeNode tl : l) {
System.out.println(tl.val);
}
}
}
import java.util.ArrayList;
import java.util.List;
public class T95 {
public List
return genTrees(1,n);
}
public List
{
List
if(start>end)
{
list.add(null);
return list;
}
if(start == end){
list.add(new TreeNode(start));
return list;
}
List
for(int i=start;i<=end;i++)
{
left = genTrees(start, i-1);
right = genTrees(i+1,end);
for(TreeNode lnode: left)
{
for(TreeNode rnode: right)
{
TreeNode root = new TreeNode(i);
root.left = lnode;
root.right = rnode;
list.add(root);
}
}
}
return list;
}
public static void main(String[] args){
T95 t95 = new T95();
List
l = (t95.generateTrees(3));
for(TreeNode tl : l) {
System.out.println(tl.val);
}
}
}