给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。
https://leetcode-cn.com/problems/unique-binary-search-trees-ii/
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {number} n
* @return {TreeNode[]}
*/
var generateTrees = function(n) {
var buildTree=function(start,end){
var trees=[]
if(start>end){
return [null]
}
for(var i=start;i<=end;i++){
var left=buildTree(start,i-1)
var right=buildTree(i+1,end)
for(var leftNode of left){
for(var rightNode of right){
var node=new TreeNode(i)
node.left=leftNode;
node.right=rightNode;
trees.push(node)
}
}
}
return trees;
}
if(n===0){
return []
}
return buildTree(1,n)
};