首页 > 其他 > 详细

96. Unique Binary Search Trees

时间:2019-02-11 21:39:52      阅读:193      评论:0      收藏:0      [点我收藏+]

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

Example:

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

 

96. Unique Binary Search Trees

原文:https://www.cnblogs.com/ruruozhenhao/p/10363248.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!