不同的二叉查找樹

給出 n,問由 1...n 爲節點組成的不同的二叉查找樹有多少種?

樣例

給出n = 3,有5種不同形態的二叉查找樹:

1           3    3       2      1
 \         /    /       / \      \
  3      2     1       1   3      2
 /      /       \                  \
2     1          2                  3

思路: 

枚舉以不同節點爲根節點的情況相加即可。

代碼:

public class Solution {
    /**
     * @paramn n: An integer
     * @return: An integer
     */
    public int numTrees(int n) {
        // write your code here
        if(n==0)
            return 1;
        int[] dp = new int[n+1];
        dp[0]=dp[1]=1;
        for(int i=2;i<=n;++i)
            for(int j=0;j<i;++j)
                dp[i] += dp[j]*dp[i-1-j];
        return dp[n];
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章