zoukankan      html  css  js  c++  java
  • 【LeetCode】96. Unique Binary Search Trees (2 solutions)

    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

    Base case: n==0, n==1时,f(n)==1

    递推关系:f(n)=∑f(i)*f(n-i-1)。即以第i个为根节点,左右子树数目相乘。

    解法一:递归

    class Solution {
    public:
        int numTrees(int n) {
            if(n == 0)
                return 1;
            else if(n == 1)
                return 1;
            else
            {
                int count = 0;
                for(int i = 0; i <= (n-1)/2; i ++)
                {
                    if(i < n-1-i)
                        count += 2*numTrees(i)*numTrees(n-1-i);
                    else
                        count += numTrees(i)*numTrees(n-1-i);
                }
                return count;
            }
        }
    };

    解法二:动态规划

    class Solution {
    public:
        int numTrees(int n) {
            if(n==0 || n == 1)
                return 1;
                
            vector<int> v(n+1, 0);
            v[0] = 1;//n==0
            v[1] = 1;//n==1
            for(int i = 2; i <= n; i ++)
            {//n == i
                for(int j = 0; j < i; j ++)
                {
                    v[i] += v[j]*v[i-1-j];
                }
            }
            return v[n];
        }
    };

  • 相关阅读:
    线性筛素数
    m个苹果放入n个盘子问题
    幸运的袋子
    [HNOI2013]消毒
    [SDOI2016]数字配对
    [SCOI2015]小凸玩矩阵
    [JLOI2008]将军
    [HEOI2016/TJOI2016]游戏
    [洛谷4329/COCI2006-2007#1] Bond
    [BZOJ1324]Exca王者之剑
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4138191.html
Copyright © 2011-2022 走看看