[問題] 請問這個的時間和空間複雜度

作者: illl (ill!)   2015-03-12 10:51:32
小弟想請問這個的時間和空間複雜度
題目是給你一個n
要你把1~n所有可能的Binary Search Tree給列出來
我是用遞迴(qq)找
每一個遞迴有三個for loop
第一個for loop是要列出那個範圍所有的node
剩下兩個是把左邊和右邊的child node街上去
感恩
public List<TreeNode> generateTrees(int n) {
return qq(1,n);
}
List<TreeNode> qq(int first, int last){
List<TreeNode> res= new ArrayList<TreeNode>();
if(first>last) {
res.add(null);
return res;
}
for(int i=first; i<=last; i++){
List<TreeNode> left=qq(first, i-1);
List<TreeNode> right=qq(i+1, last);
for(TreeNode leftti: left){
for(TreeNode rightti: right){
TreeNode temp= new TreeNode(i);
temp.left=leftti;
temp.right=rightti;
res.add(temp);
}
}
}
return res;
}
作者: yr (Sooner Born Sooner Bred)   2015-03-12 16:04:00
1~n所有可能的Binary Search Tree <-- 可否定義一下這個?這題只要算出數量就好,不用列出來,你是要列出來嗎
作者: illl (ill!)   2015-03-12 17:31:00
我想要列出來,感恩
作者: yr (Sooner Born Sooner Bred)   2015-03-12 21:29:00
稍微分析一下,用猜的 time: O(n^n) space: O(n^(n+1))
作者: illl (ill!)   2015-03-13 02:07:00
多謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com