1. 程式人生 > >【leetcode】96.(Medium)Unique Binary Search Tree

【leetcode】96.(Medium)Unique Binary Search Tree

解題思路:
動態規劃
首先當結點數為1和0時設定樹的個數為1

假設我已經求出來了結點數小於n的所有結果,現在當樹的個數為n時,
樹的根節點可以是1-n。
當樹的根是i是,左邊有i-1個節點,右邊有n-i個節點,及當根是i時,可以有F[i-1]*F[n-i]顆樹
遍歷一遍1-n即可

提交程式碼:

class Solution {
    public int numTrees(int n) {
    	int[] dp=new int[n+1];
    	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]; } }

執行結果:

在這裡插入圖片描述