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 解题报告

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

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

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

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

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

Leetcode-96.Unique Binary Search Trees

题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? Fo...

Leetcode 96 Unique Binary Search Trees(独一的二叉搜索树)

一,问题描述 1,给定一个n,返回所有的二叉搜索树的总数。2,例如: 输入:n=4 输出:14输入:n=3 输出:5输入:n=5 输出:42输入:n=6; 输出:132输入: n=2 输...

<LeetCode OJ> 96. Unique Binary Search Trees

96. Unique Binary Search Trees My Submissions Question Total Accepted: 75913 Total Submissions: ...

[leetcode]96. Unique Binary Search Trees(Java)

https://leetcode.com/problems/unique-binary-search-trees/#/description Given n, how many ...

leetcode_middle_45_96. Unique Binary Search Trees

题意: 给一个n,问能存储从1到n 的二叉排序树有多少个。 分析: 我们对前几个比较小的树,举例子画图分析。我们一定要搞清楚,为什么3个结点就是5个树,4个结点就是14个树。多画了几个树之后,很明显...
  • pusude
  • pusude
  • 2017年02月15日 14:08
  • 109

[leetcode] 96.Unique Binary Search Trees

题目: Given n, how many structurally unique BST’s (binary search trees) that store values 1…n?For exa...

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 [medium]
举报原因:
原因补充:

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