关闭

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

标签: leetcode
101人阅读 评论(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

解题思路

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];
    }
};




0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6759次
    • 积分:464
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论