leetcode+二叉搜索树有多少种+DP,卡特兰树

点击打开链接
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
    int numTrees(int n) {
        vector result;
        result.push_back(1);//只有一个节点
        result.push_back(1);//有两个节点1、2。 二叉树有两种
        for(int i=2;i<=n;i++){
            int sum=0;
            //计算含i个结点时二叉查找树的种类数,j表示1~i中取任一结点作为根。
            for(int j=0;j<=i;j++){
                sum+=(result[j-1]*result[i-j]);  //左树*右树  实现递推公式 
            }
            result.push_back(sum);
        }
        return result.back();
    }
};
int main()
{
    Solution temple;
    return 0;
}
leetcode+二叉搜索树有多少种+DP,卡特兰树_第1张图片

你可能感兴趣的:(Leetcode)