首页 > 其他 > 详细

96. Unique Binary Search Trees

时间:2018-01-23 13:33:33      阅读:232      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/zle1992/p/8335187.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!