Unique Binary Search Trees

Navneet Ojha
2 min readJun 25, 2020

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

Before starting let us understand what Binary Search Trees are:

Trees which have left node smaller than the root and right node greater than the root are BST’s

Solution:

Let’s say for n = 0 and n = 1, Unique BST is 1

T[0] = 1;

T[1] = 1;

If n = 2, we can form 2 unique BST’s. First considering 2 as root node, 1 will be added to the left side as it is smaller than 2. Second, considering 1 as root and 2 will be added on the right side as 2 is greater than 1.

    2         1          
/ \ + / \
{1} {0} {0} {2}
T[1]*T[0] T[0]*T[1]

T[2] = T[1] * T[0] + T[0] * T[1] = 1 + 1 = 2

If n = 3,

Lets first consider 1 as root, as 2 and 3 are greater than 1, it will be added to the right sub tree. The right subtree have 2 elements and we already know how many unique BST’s we can form if n = 2, we can use that value to compute for n=3. So basically we are going to solve the problem using dynamic programming

      1              
/ \
{0} {2, 3}
T[0] * T[2]

Now consider 2 as root, 1 will go to the left sub tree as it is smaller and 3 will go to the right sub tree

      2             
/ \
{1} {3}
T[1] * T[1]

Now consider 3 as root, 2, and 1 will be added to the left sub tree as it is smaller than 3.

     3            
/ \
{1, 2} {0}
T[2] * T[0]

T[3] = T[0] * T[2] + T[1] * T[1] + T[2] * T[0]

T[3] = 2 + 1 + 2 = 5

Like wise we can solve the problem considering every element as root and using the previous results

--

--

Navneet Ojha

I am Indian by birth, Punjabi by destiny. Humanity is my religion. Love to eat, travel, read books and my million dreams keep me alive.