LeetCode 之 Unique Binary Search Trees

原创 2013年12月04日 15:03:41

原题:

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 对1-n中的每一个数,都可能是根节点,然后比其小的一定是在该根节点的左侧,比其大的在根节点的右侧。

2 如果只有一个元素,返回1

3 我用的是一个比较笨的方法,比如对数组1-n,现在i为根节点,则1~i-1都为其左节点,i+1 ~ n都为其右节点,然后对左右节点分别递归处理就行了,然后把左右子树的结果相乘得到i为根节点的情况数

4 把i从1到n的所有情况数加起来就是最后结果

5 我声明了一个二维数组record[][],record[i][j]代表起点为i,终点为j的所有可能数,如果i>j说明是在考虑边界情况(如在考虑1或者n),返回1说明就是其的左子树或右子树情况(为空,只有一种情况)

代码如下(12ms):

class Solution {
public:
    int numTrees(int n) {
        int ** record = new int*[n+1];
        for(int i = 0; i <= n ;i++){
            record[i] = new int [n+1]();
        }
        for(int i = 0 ;i <=n ; i++){
            for(int j = 0; j<=n;j++){
                record[i][j]=-1;
            }
        }
        
        return getNum(1,n , record);
    }
    int getNum(int start , int end , int **record){
        if(start >= end) return 1;
        if(record[start][end] >0 ) return record[start][end]; 
        
        int result = 0;
        for(int i = start ; i<= end ; i++){
            result += getNum(start , i-1 , record) * getNum(i+1, end , record);
        }
        record[start][end] = result;
        return result;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For ...

LeetCode 95, 96. Unique Binary Search Trees i. ii

1. 题目描述 95.Given n, generate all structurally unique BST’s (binary search trees) that store values...

Leetcode: Unique Binary Search Trees II

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For ...

leetCode(26):Unique Binary Search Trees

Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ex...

[leetcode]95. Unique Binary Search Trees II

题目链接:95. Unique Binary Search Trees IIGiven an integer n, generate all structurally unique BST’s (bi...

LeetCode --- 96. Unique Binary Search Trees

题目链接:Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) t...

leetcode 95&96. Unique Binary Search Trees

96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha...

LeetCode | Unique Binary Search Trees

参考博文:http://fisherlei.blogspot.sg/2013/03/leetcode-unique-binary-search-trees.html题目Given n, how man...

【LeetCode】96. Unique Binary Search Trees 解法及注释

96. Unique Binary Search Trees Total Accepted: 80679 Total Submissions: 216054 Difficulty: Medium ...

LeetCode: Unique Binary Search Trees II [096]

【题目】 Given n, generate all structurally unique BST's (binary search trees) that store values 1...n....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)