博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
163. 不同的二叉查找树
阅读量:6994 次
发布时间:2019-06-27

本文共 795 字,大约阅读时间需要 2 分钟。

163. 不同的二叉查找树 

 

给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?

样例

给出n = 3,有5种不同形态的二叉查找树:

1           3    3       2      1 \         /    /       / \      \  3      2     1       1   3      2 /      /       \                  \2     1          2                  3
int NumTrees::numTrees(int n) {    /*     * 解题思路:二叉树递归的原则思路     * 1.3个可以看做是左子树2个 右子树2个 和左右子树分别一个相乘 2*0+1*1+0*2     * 2.4个可以看做做树 固定1个  左3 右1 左2 右2  左1 右3 3*0+1*2+2*1+0*3     * */    // write your code here    if (n <= 0) {        return 1;    }    vector
dp(n + 1, 0); dp[0] = 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];}

  

 

转载于:https://www.cnblogs.com/kanekiken/p/7992169.html

你可能感兴趣的文章