zoukankan      html  css  js  c++  java
  • 163. 不同的二叉查找树

    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<int> 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
Copyright © 2011-2022 走看看