给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?
您在真实的面试中是否遇到过这个题?
Yes
样例
给出n = 3,有5种不同形态的二叉查找树:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
class Solution { public: /** * @paramn n: An integer * @return: An integer */ int numTrees(int n) { // write your code here //if(n<=1) return 1; vector<int>a(n+1); a[0]=a[1]=1; for(int i=2;i<=n;i++){ for(int j=0;j<i;j++){ a[i]+=a[j]*a[i-1-j]; } } return a[n]; } };