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: 5

Example 2:

Input: n = 1
Output: 1

Approach

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?