二叉搜索树的个数i

unique-binary-search-trees

http://www.nowcoder.com/questionTerminal/b2b6734cbc0b43088f6084785046b861

设值为n的情况下,可以组成f(n)个二叉搜索树,根据规律可知:

  1. f(0) = 1
  2. f(1) = 1
  3. f(n) += f(k-1)*f(n-k), 其中k=1,2,...n

显然,这是一个动态规划问题,实现如👇:

//
// Created by jt on 2020/8/23.
//
#include <vector>
using namespace std;

class Solution {
public:
    /**
     *
     * @param n int整型
     * @return int整型
     */
    int numTrees(int n) {
        // write code here
        vector<int> dp(n+1, 0);
        dp[0] = dp[1] = 1;
        for (int i = 2; i <= n; ++i) {
            for (int j = 1; j <= i; ++j) {
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }
        return dp[n];
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
4
收藏
分享
牛客网
牛客企业服务