美文网首页
Leetcode96. Unique Binary Search

Leetcode96. Unique Binary Search

作者: lucky8601 | 来源:发表于2016-12-12 10:34 被阅读0次

Question

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           1           2          3        3
 \           \         /  \       /        /
  2          3        1    3     1        2
   \        /                     \      /
    3      2                       2    1

求解过程

思路:1...n之间的所有BST数量等于以1...n之间的每个数为根节点的BST之和。

G(n):表示1...n之间的所有BST数量
F(i,n):表示以i为根节点的BST数量
G(n)=F(1,n)+F(2,n)+...+F(n,n)
F(i,n)=G(i-1)*G(n-i)  
注:
1...i...n以i为根节点的时候,BST数量等于以1...(i-1)组成的左子树数量乘以(i+1)...n组成的右子树,(i+1)...n组成的BST数量等1...(n-i)能构成的BST数量.
递推公式:
G(n)=G(0)*G(n-1)+G(1)*G(n-2)+...+G(n-1)*G(0)      G(0)=1

实现代码

public static int countOfBSTNumber(int n) {    
  if (n < 0) return -1;    
  int[] C = new int[n + 1];    
  C[0] = 1;    
  for (int i = 1; i <= n; i++) {       
    for (int j = 0; j < i; j++) {            
      C[i] += C[j] * C[i - j - 1];        
    }    
   }   
   return C[n];
}

分析:

n is :1, the number of BST is : 1
n is :2, the number of BST is : 2
n is :3, the number of BST is : 5
n is :4, the number of BST is : 14
n is :5, the number of BST is : 42
n is :6, the number of BST is : 132
n is :7, the number of BST is : 429
n is :8, the number of BST is : 1430
n is :9, the number of BST is : 4862
n is :10, the number of BST is : 16796
n is :11, the number of BST is : 58786
n is :12, the number of BST is : 208012
n is :13, the number of BST is : 742900
n is :14, the number of BST is : 2674440
n is :15, the number of BST is : 9694845
n is :16, the number of BST is : 35357670
n is :17, the number of BST is : 129644790
n is :18, the number of BST is : 477638700
n is :19, the number of BST is : 1767263190
n is :20, the number of BST is : -2025814172

可以看到当n=20的时候,所构成的BST的数量以前超过了int能够表示的数范围了。

相关文章

网友评论

      本文标题:Leetcode96. Unique Binary Search

      本文链接:https://www.haomeiwen.com/subject/qajemttx.html