96. Unique Binary Search Trees

Posted 张乐乐章

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

 

 

 

 

以上是关于96. Unique Binary Search Trees的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 96. Unique Binary Search Trees

96. Unique Binary Search Trees

96. Unique Binary Search Trees

96. Unique Binary Search Trees

96. Unique Binary Search Trees

[动态规划] leetcode 96 Unique Binary Search Trees