当前位置:网站首页>牛客网:有多少个不同的二叉搜索树

牛客网:有多少个不同的二叉搜索树

2022-06-30 15:44:00 lsgoose

 在力扣上说的很明白了,很有意思的推导:

力扣

首先,设F(i,n)表示n长度的序列中以i为根节点划分的二叉搜索树的个数,G(n)表示长度n的序列的二叉搜索树的个数,明显有:

而很明显,F(i, n)的个数其实是可以由两边子树的G求得的,如下所示: 

 然后就推导出了G的递推表达:

代码如下所示:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<int> G(n+1);
    G[0]=G[1]=1;
    for(int i=2;i<=n;++i){
        for(int j=0;j<=i;++j){
            G[i]+=G[j-1]*G[i-j];
        }
    }
    cout<<G[n];
    return 0;
}

 

原网站

版权声明
本文为[lsgoose]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_46266058/article/details/125528643