95.別のバイナリ検索ツリーII
すべて1により生成された整数nを、所与... n個のノードからなる二分探索木です。
例:
入力:3
出力
:
[ [1、NULL、3,2]、
[3,2、ヌル,. 1]、
[3,1、NULL、NULL、2]、
[2,1]、[3]、
[1、NULL 、2、ヌル,. 3]
]
説明:
バイナリ検索ツリー構造に対応する5つの以上の異なる出力:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
class Solution {
public List<TreeNode> generateTrees(int n) {
if(n == 0)
return new LinkedList<TreeNode>();
return generateTrees(1,n);
}
public List<TreeNode> generateTrees(int start,int end) {
List<TreeNode> res = new LinkedList<TreeNode>();
if(start > end){
res.add(null);
return res;
}
for(int i = start;i <= end;i++){
List<TreeNode> subLeftTree = generateTrees(start,i-1);
List<TreeNode> subRightTree = generateTrees(i+1,end);
for(TreeNode left : subLeftTree){
for(TreeNode right : subRightTree){
TreeNode node = new TreeNode(i);
node.left = left;
node.right = right;
res.add(node);
}
}
}
return res;
}
}