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

【LeetCode】Unique Binary Search Trees

时间:2014-12-04 21:38:52      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:leetcode   bst   

     题意:

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

标签:leetcode   bst   

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

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