096 Unique Binary Search Trees
Given n, how many structurally unique BST’s (binary search trees) that store values 1…n?
For example,
Given n = 3, there are a total of 5 unique BST’s.
|
|
思路
投机取巧了一下。这道题可以将问题转化成,知道一棵树的中序遍历,我们能够构造出几棵不同的树?最后的结果是一组Catalan Number(明安图-卡塔兰数)。这个规律其实一开始是由我们中国的一位老祖先发现的。卡塔兰数的一般项公式为 (1/n+1) * C(n,2n),从而得到解。
当然也可以用动态规划/递归的方式解决。
譬如[1,2,3,4], 取 1 为根节点,右边的子树2,3,4是有序的,取1为根节点的结果是1 numTrees(3) = 5, 取2为根节点的结果是 1 numTrees(2) = 2, 取3为根节点的结果是2, 取4为根节点的结果是5,所以我们可以得到numTrees(4) = 14。
|
|