LeetCode 96 - 不一樣的二叉搜索樹 - [DP]

 

假定 $f[n]$ 表示有 $n$ 個節點的二叉樹,有多少種不一樣結構。spa

所以 $f[n] = \sum_{i=0}^{n-1} (f[i] \times f[n-1-i])$,選一個節點做爲根節點,那麼剩下的 $n-1$ 個節點,分配到兩棵子樹。code

 

AC代碼:blog

class Solution { public: int numTrees(int n) { if(n<=0) return 0; if(n==1) return 1; int f[n+1]; f[0]=f[1]=1; for(int i=2;i<=n;i++) { f[i]=0; for(int j=0;j<=i-1;j++) { int k=i-1-j; f[i]+=f[j]*f[k]; } } return f[n]; } };
相關文章
相關標籤/搜索