LeetCode解题报告 96. Unique Binary Search Trees [medium]

原创 2017年01月02日 23:48:10

题目要求

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

解题思路

BST指的是二分搜索树,比跟节点小的在左,比跟节点大的在右。
当节点为n时,不同的BST包括当节点分别为1,2,3,...,n时的BST之和。
对于n个节点,当跟节点为i时,比i小的i-1个节点作为左子树,比i大的(n-1)-(i-1)=n-i个节点作为右子树。左子树的方案数*右子树的方案数为总的方案数。

定义:F(i, n) = G(i-1) * G(n - i),

F(i, n)的含义是:以i为根节点,且总共有n个节点的树。例如F(2,3)就是说2为根节点,总共有3个节点。

递推的初始条件为G(0)=1, G(1)=1。

复杂度分析

时间复杂度为O(N*N)

代码如下

class Solution {
public:
    int numTrees(int n) {
        vector<int>dp(n+1,0);
        dp[0]=1;
        dp[1]=1;
        for (int i=2; i<=n ; i++) {
            for (int j=1; j<=i; j++) {
                dp[i]+=dp[j-1]*dp[i-j];
            }
        }
        return dp[n];
    }
};




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[leetcode] 96. Unique Binary Search Trees 解题报告

题目链接:https://leetcode.com/problems/unique-binary-search-trees/ Given n, how many structurally uniq...

LeetCode 96. Unique Binary Search Trees 解题报告

LeetCode 108. Convert Sorted Array to Binary Search Tree 解题报告

[Leetcode] 95. Unique Binary Search Trees II 解题报告

题目: Given an integer n, generate all structurally unique BST's (binary search trees) that store...

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 --- 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】96. Unique Binary Search Trees 解法及注释

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

【一天一道LeetCode】#96. Unique Binary Search Trees

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目...

LeetCode 96. Unique Binary Search Trees 题解 —— Java

题目链接:https://leetcode.com/problems/unique-binary-search-trees/#/description 题目要求:给定正整数n,计算能构成的BST数量...

LeetCode-96. Unique Binary Search Trees (JAVA)BST的数量

LeetCode-96. Unique Binary Search Trees (JAVA)BST的数量, 对于n>=2的情况,事实上,1,2,..n都可以作为根节点,若i作为根节点,根据BST的性...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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