码迷,mamicode.com
首页 > 其他好文 > 详细

96_Unique Binary Search Trees

时间:2016-03-14 11:55:20      阅读:152      评论: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

 

 

给定从1~n的数组,求以这些数字能组成多少个二叉搜索树。

1~n,以第i个数为根,则二叉搜索树的数量为 N[1, i - 1] * N[i + 1, n]   (1到i-1个数组成的二叉搜索树个数  *  i+1到n个数组成的二叉搜索树的个数)

该问题就成为了一个动态规划的问题。

设f(i) 为N个数字二叉搜索树的个数。

f(0) = 1;

f(1) = f(0) * f(0) = 1; (左右都是有0个数的二叉搜索树个数)

f(2) = f(0) * f(1) +          (1为根)

   f(1) * f(0)  = 2;       (2为根)

f(3) = f(0) * f(2) +    (1为根)

     f(1) * f(1) +      (2为根)

     f(2) * f(0) = 5;    (3为根)

……

 

f(n) = f(0) * f(n-1) +    (1为根)

    f(1) * f(n-2) +    (2位根)

    ……

    f(n-1) * f(0)       (n为根)

 

int numTrees(int n) {
    int result = 0;
    if(n == 0)
    {
        return 1;
    }
    if(n == 1)
    {
        return 1;
    }
    
    for(int i = 0; i < n; i++)
    {
        result += numTrees(i) * numTrees(n - i - 1);
    }
    
    return result;
}

用递归,效率低,超时

   

96_Unique Binary Search Trees

标签:

原文地址:http://www.cnblogs.com/Anthony-Wang/p/5266531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!