class Solution { public: int numTrees(int n) { if(n<=2) return n; int i=1; n --; int sum=0; while(i<n){ sum += numTrees(i) * numTrees(n-i); i++; } sum += 2 * numTrees(n); return sum; } };
就是以“根”着眼点,剩下的n-1个元素怎么摆的问题。
枚举:0,n-1;
1,n-2;
……,
n-1, 0;
可以改进:用一个数组,保存,备忘录