96. Unique Binary Search Trees
发布日期:2021-05-09 02:50:43 浏览次数:21 分类:博客文章

本文共 885 字,大约阅读时间需要 2 分钟。

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

Example:

Input: 3Output: 5Explanation: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

 

Approach #1: DP. [C++]

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

  

Analysis:

status: nums[n] represent that there have n nodes the result of BST's number.

init: nums[1] = 1, nums[0] = 1;

function: ∑(nums[j] * nums[i-1-j]);

result: nums[n]

 

上一篇:97. Interleaving String
下一篇:306. Additive Number

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月11日 23时55分38秒