Leetcode 每日一题 2020.7.15
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?
二叉搜索树
二叉搜索树
也被称为二叉查找树、有序二叉树或者排序二叉树,是指一刻空树或者具有以下性质的二叉树
:\
- 若任意节点的左子树不空,则左子树上所有节点均
小于
它的根节点的值;- 若任意节点的右子树不空,则做字数上所有节点均
大于
或等于
它的根节点的值- 任意节点的左、右子树也分别为
二叉查找树
二叉搜索树
相比于其他数据结构的优势在于查找
、插入
的时间复杂度
较低,为O(logn)。二叉搜索树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数据
等。
JavaScript
var numTrees = function(n) {
const G = new Array(n + 1).fill(0);
G[0] = 1;
G[1] = 1;
for (let i = 2; i <= n; ++i) {
for (let j = 1; j <= i; ++j) {
G[i] += G[j - 1] * G[i - j];
}
}
return G[n];
};
时间复杂度 : O(n*n)
其中 n 表示二叉搜索树的节点个数。G(n)
函数一共有 n 个值需要求解,每次求解需要O(n)
的时间复杂度,因此总时间复杂度为 O(n*n)
空间复杂度 : O(n)
我们需要 O(n)
的空间存储 G 数组。
本文使用 mdnice 排版
- END -