zoukankan      html  css  js  c++  java
  • 96_Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

    For example,
    Given n = 3, there are a total of 5 unique BST's.

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

    给定从1~n的数组,求以这些数字能组成多少个二叉搜索树。

    1~n,以第i个数为根,则二叉搜索树的数量为 N[1, i - 1] * N[i + 1, n]   (1到i-1个数组成的二叉搜索树个数  *  i+1到n个数组成的二叉搜索树的个数)

    该问题就成为了一个动态规划的问题。

    设f(i) 为N个数字二叉搜索树的个数。

    f(0) = 1;

    f(1) = f(0) * f(0) = 1; (左右都是有0个数的二叉搜索树个数)

    f(2) = f(0) * f(1) +          (1为根)

       f(1) * f(0)  = 2;       (2为根)

    f(3) = f(0) * f(2) +    (1为根)

         f(1) * f(1) +      (2为根)

         f(2) * f(0) = 5;    (3为根)

    ……

    f(n) = f(0) * f(n-1) +    (1为根)

        f(1) * f(n-2) +    (2位根)

        ……

        f(n-1) * f(0)       (n为根)

    int numTrees(int n) {
        int result = 0;
        if(n == 0)
        {
            return 1;
        }
        if(n == 1)
        {
            return 1;
        }
        
        for(int i = 0; i < n; i++)
        {
            result += numTrees(i) * numTrees(n - i - 1);
        }
        
        return result;
    }

    用递归,效率低,超时

       

  • 相关阅读:
    vlookup返回多个结果
    11i
    Oracle EBS APIs
    EBS 定义显示总帐快码设置
    EBS开发技术之Patch安装
    @Autowired和@Resource的区别
    mycat数据库中间件入门
    spring配置多数据源——mybatis
    localstorage跟sessionstorage
    java短信接口调用
  • 原文地址:https://www.cnblogs.com/Anthony-Wang/p/5266531.html
Copyright © 2011-2022 走看看