96. 不同的二叉搜索树

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

示例:

输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:

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


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-binary-search-trees
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

直接用公式:

 

 比较水的是,结果只能返回int类型的,这就简单不少了。

 

 1 class Solution {
 2     public int numTrees(int n) {
 3         double t = 1.0;
 4         long cnt = 1;
 5         // C(n, i)
 6         for (int i = 1; i <= n; i++) {
 7             t = t * (n - i + 1)*1.0 / i;
 8             cnt += t*t;
 9         }
10         long res = cnt / (1+n);
11         return (int)res;
12     }
13 }

 

posted @ 2019-09-28 17:09  赤云封天  阅读(122)  评论(0编辑  收藏  举报