您的位置:首页 > Web前端 > JavaScript

[LeetCode][JavaScript]Unique Binary Search Trees II

2015-11-08 22:09 766 查看

Unique Binary Search Trees II

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.

For example,
Given n = 3, your program should return all 5 unique BST's shown below.

1         3     3      2      1
\       /     /      / \      \
3     2     1      1   3      2
/     /       \                 \
2     1         2                 3

https://leetcode.com/problems/unique-binary-search-trees-ii/#

生成n个节点的二叉排序树。

跟上一题一样的思路,分治,从1到n遍历,选当前的点为根,比根小的在左子树,比根大的在右子树。

/article/7171054.html

/**
* Definition for a binary tree node.
* function TreeNode(val) {
*     this.val = val;
*     this.left = this.right = null;
* }
*/
/**
* @param {number} n
* @return {TreeNode[]}
*/
var generateTrees = function(n) {
return getTree(1, n);

function getTree(start, end){
var ret = [], i, j, k, left, right, node;
if(start > end){
return [null];
}else if (start === end){
return [new TreeNode(start)];
}
for(i = start; i <= end; i++){
left = getTree(start, i - 1);
right = getTree(i + 1, end);
for(j = 0; j < left.length; j++){
for(k = 0; k < right.length; k++){
node = new TreeNode(i);
node.left = left[j];
node.right = right[k];
ret.push(node);
}
}
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: