首页 > 其他 > 详细

【LeetCode】Unique Binary Search Trees

时间:2014-12-04 21:37:12      阅读:368      评论: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

    思路:

    n = 0 时,空树,只有一棵。n = 1 时,只有一种可能,也是 1。

    n >= 2 时,对 12....n,分别以 i 为根节点,那么左边有 i-1 个节点,右边有 n-i-1 个节点,所以

        f[n] += f[k-1]*f[n-k-1], k = 1,2,....,n-1


    代码:

    C++:

class Solution {
public:
    int numTrees(int n) {
        int *cnt = new int[n+1];
        memset(cnt,0,(n+1)*sizeof(int));
        cnt[0] = 1;
        cnt[1] = 1;

        for(int i = 2;i <= n;i++)
            for(int j = 0;j < i;++j)
                cnt[i] += cnt[j]*cnt[i-j-1];

        int sum = cnt[n];
        delete []cnt;

        return sum;

    }
};


    Python:

class Solution:
    # @return an integer
    def numTrees(self, n):
        f = [0 for x in range(0,n+1)]
        f[0] = 1
        f[1] = 1
        
        for i in range(2,n+1):
            for j in range(0,i):
                f[i] += f[j]*f[i-j-1]
        
        return f[n]

【LeetCode】Unique Binary Search Trees

原文:http://blog.csdn.net/jcjc918/article/details/41725855

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