GivenN, How many structurally uniqueBST's(Binary Search Trees) that store values 1...N?
For example,
GivenN= 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
Each vertex in N points can be used as the root node. When I is used as the root node, vertices smaller than I can only be placed in the left subtree. vertices larger than I can only be placed in the right subtree, in this case, you only need to determine the number of different left and right subtree types. The multiplication of the two is the total number of BST when I is used as root.
1 public class Solution { 2 public int numTrees(int n) { 3 int[] a=new int[n+1]; 4 a[0]=1; 5 for (int i = 1; i <= n; i++) { 6 if (i<3) { 7 a[i]=i; 8 }else { 9 for (int j = 1; j <=i; j++) {10 a[i]=a[i]+a[j-1]*a[i-j];11 }12 }13 }14 return a[n];15 }16 }
Leetcode unique Binary Search Trees