Unique Binary Search Trees

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
 class Solution {
    public int numTrees(int n) {
         int countUniqueTrees[] = new int[n + 1];
   
    countUniqueTrees[0] = 1;
    countUniqueTrees[1] = 1;
 
    for (int i = 2; i <= n; i++) 
    {
        for (int j = 1; j <= i; j++) 
        {
            countUniqueTrees[i] = countUniqueTrees[i] + (countUniqueTrees[i - j] * 
                             countUniqueTrees[j - 1]);
        }
    }
 
    return countUniqueTrees[n];
    }
}


The idea behind solving this problem is , for all possible values of i, consider i as root, such that 1....i-1 will come under left subtree and i+1.....n will come under right subtree.
Finally the overall sum of all products will give a count of unique subtree.


Click Follow button to receive updates from us instantly.

Please let us know about your views in comment section.

                                                     😍..Happy Coding...😍

Comments

Popular posts from this blog

First Unique Character in a String

Balanced Binary Tree

Majority Element

Smallest Range II