zoukankan      html  css  js  c++  java
  • 【LeetCode】96

    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
     
    Solution 1:  递归
     1 class Solution {
     2 public:
     3     int numTrees(int n) {
     4         if(n == 0)
     5             return 1;
     6         else if(n == 1)
     7             return 1;
     8         else
     9         {
    10             int count = 0;
    11             for(int i = 0; i <= (n-1)/2; i ++)
    12             {
    13                 if(i < n-1-i)
    14                     count += 2*numTrees(i)*numTrees(n-1-i);
    15                 else
    16                     count += numTrees(i)*numTrees(n-1-i);
    17             }
    18             return count;
    19         }
    20     }
    21 };

    Solution 2: dynamic programming . 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<2)return 1;
            
            vector<int> v(n+1, 0);
            v[0]=1;
            v[1]=1;
            for(int i=2;i<n+1;i++){
                for(int j=0;j<i;j++){
                    v[i]+=v[j]*v[i-1-j];
                }
            }
            return v[n];
        }
    };
    
    
  • 相关阅读:
    如何在delphi里面控制Edit只能输入数字
    ShellExecute函数
    GetSystemMenu 获取系统菜单
    StringReplace 函数
    delphi 字符串查找
    Pos 函数
    Copy 函数
    css笔记
    HTML5笔记
    node.js nodejs supvisor模块
  • 原文地址:https://www.cnblogs.com/irun/p/4719720.html
Copyright © 2011-2022 走看看