Leecode: Unique Binary Search Trees II(JS解答)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210329164419351.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpb25nQmVuMTk5Mw==,size_16,color_FFFFFF,t_70)
function generateTrees(n: number): Array<TreeNode | null> {
let res: Array<TreeNode | null> = [];
if(n == 0) return res;
return helper(1, n);
};
function helper(start: number, end: number): Array<TreeNode | null> {
let res: Array<TreeNode | null> = [];
if(start > end){
res.push(null);
return res;
}
if(start == end){
let newNode = new TreeNode(start);
res.push(newNode);
return res;
}
for(let i = start; i <= end; i++){
let leftNodes = helper(start, i-1);
let rightNodes = helper(i+1,end);
for(let leftNode of leftNodes){
for(let rightNode of rightNodes){
let root = new TreeNode(i);
root.left = leftNode;
root.right = rightNode;
res.push(root);
}
}
}
return res;
}