15. Unique Binary Search Trees
Given an integer n, return the number of structurally unique BST's (binary search trees) which has exactly n nodes of unique values from 1 to n.
Example 1:

Input: n = 3
Output: 5Example 2:
Input: n = 1
Output: 1Approach
If we take a no of as root as its left subtree has 3 combinations and right subtree has 4 combinations total combinations for R = 3 * 4

If total no of nodes are 4 We can make each node as root once and count the combinations and add them.

Solution: (DP)
class Solution
{
public:
    int numTrees(int n)
    {
        vector<int> dp(n + 1);
        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];
    }
};Last updated
Was this helpful?