Given an integer `n`

, return *the number of structurally unique **BST'**s (binary search trees) which has exactly *`n`

* nodes of unique values from* `1`

*to* `n`

.

**Example 1:**

**Input:** n = 3

**Output:** 5

**Example 2:**

**Input:** n = 1

**Output:** 1

**Constraints:**

`1 <= n <= 19`

Approach 1:

*Dynamic Programming*

As we can see ,

- number of unique BST for a tree with n=1 is 1
- number of unique BST for a tree with n=2 is 2
- number of unique BST for a tree with n=3 is