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

    1. 输入: 3
    2. 输出: 5
    3. 解释:
    4. 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
    5. 1 3 3 2 1
    6. \ / / / \ \
    7. 3 2 1 1 3 2
    8. / / \ \
    9. 2 1 2 3
    class Solution {
    public:
        int numTrees(int n) {
            vector<int> dp(n+1, 0);
            dp[0] = 1;
            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];
        }
    };