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?

    Example:

    Input: 3
    Output: 5
    Explanation:
    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
    
    class Solution:
        def numTrees(self, n):
            """
            :type n: int
            :rtype: int
            """
            res = [0 for i in range(n+1)]
            res[0] = res[1] = 1
            for i in range(2,n+1):
                for j in range(i):
                    res[i] += res[j]*res[i-j-1]
            return res[n]
    

    卡罗兰公式

    记G(n)为长度为n的数的个数,F(i,n)为以i为顶点,总顶点数为n的情况下解的个数.
    则G(n) = F(1,n)+F(2,n)+...+F(n,n)
    而 F(i,n)=G(i-1)*G(n-i) 1<=i<=n(由二叉搜索树的性质得出)

    G(n) = G(0) * G(n-1) + G(1) * G(n-2) + … + G(n-1) * G(0)
    参考自: https://blog.csdn.net/u012501459/article/details/46622501

  • 相关阅读:
    JS函数式编程【译】前言
    11.15周总结
    11.13
    11.12
    11.11
    11.10
    11.9
    11.8周总结
    11.6
    11.5
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9744828.html
Copyright © 2011-2022 走看看