Posts

Showing posts with the label Unique Binary Search Tree

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];     } } Try it on Leetcode The idea behind solving this problem is , for all possible values of i, consider i as root, such that 1....i-1 will com