找规律,对于每一次的n,都可以看成有不同的数目作为根节点,然后再算这个根节点的左右有多少的不同的节点,就有多少种可能,最后左右相乘就ok
class Solution {public: int numTrees(int n) { vector<int>ve; ve.push_back(1); ve.push_back(1); ve.push_back(2); for(int i = 3; i <= n; ++ i){ int sum = 0; for(int j = 1; j <= i; ++ j){ sum = sum + ve[j - 1] * ve[i - j]; } ve.push_back(sum); } return ve[n]; }};新闻热点
疑难解答