Thinking process
return number of possible BST structure, try to find the pattern
can I get 3 from 2?
public class Solution {
public int numTrees(int n) {
if (n <= 2) return n;
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
dp[i] = dp[i] + dp[j - 1] * dp[i - j];
}
}
return dp[n];
}
}
Follow up - Given in-oreder traversal result of Binary tree
same as above