不同的二叉查找树

来源:互联网 发布:windows下16线程矩阵 编辑:程序博客网 时间:2024/05/16 17:40

给出 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];    }}


0 0
原创粉丝点击