Leetcode: 96. Unique Binary Search Trees

时间:2022-01-06 12:39:31

Description

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

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

思路

  • 动态规划。
  • 其实也就是看用这么多相同节点能构造多少个这种结构

代码

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