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




    动态规划:


    G(n): the number of unique BST for a sequence of length n.

    F(i, n), 1 <= i <= n: the number of unique BST, where the number i is the root of BST, and the sequence ranges from 1 to n.

    G(n) = F(1, n) + F(2, n) + ... + F(n, n). 
    

    Particularly, the bottom cases, there is only one combination to construct a BST out of a sequence of length 1 (only a root) or 0 (empty tree).

    G(0)=1, G(1)=1. 
    F(i, n) = G(i-1) * G(n-i)	1 <= i <= n 
    

    Combining the above two formulas, we obtain the recursive formula for G(n)i.e.

    G(n) = G(0) * G(n-1) + G(1) * G(n-2) + … + G(n-1) * G(0) 
    
     1 class Solution {
     2     public int numTrees(int n) {
     3         int[] G = new int[n+1];
     4         G[0] = 1;G[1] = 1;
     5         for(int i = 2;i <= n ;i++)
     6             for(int j = 1;j<= i; j++)
     7                 G[i] +=G[j-1]*G[i-j];
     8         return G[n];
     9     }
    10 }
  • 相关阅读:
    Git常用操作命令
    百度地图集成--二
    百度地图的集成--超详细
    iOS开发系列--地图与定位
    整理了一份React-Native学习指南(转)
    iOS高级编程之JSON,XML数据解析
    iOS开发基础
    C#001
    C#00
    英语学习tips
  • 原文地址:https://www.cnblogs.com/zle1992/p/8335187.html
Copyright © 2011-2022 走看看