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.
Related Posts:
Click here for May month challenges with solution and explanation
Click here for April month challenges with solution and explanation
Click here for May month challenges with solution and explanation
Click here for April month challenges with solution and explanation
Click Follow button to receive updates from us instantly.
Please let us know about your views in comment section.
Comments
Post a Comment