Given

*n*, generate all structurally unique**BST's**(binary search trees) that store values 1...*n*.
For example,

Given

Given

*n*= 3, your program should return all 5 unique BST's shown below.1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3

Solution : Divide and Conquer

from 1-> n, for each point calculate left side trees and right side trees and then construct them together.