For example,
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
public class Solution { public int numTrees(int n) { // DP problem // Supposed one node is root, if there is m nodes on the left, then there is n-m-1 on the right // The number of combination is combi(m) * combi(n-m-1) if (n < 1) return 0; int[] combi = new int[n+1]; combi[0] = 1; for (int i = 1; i <= n; i++) for (int j = 0; j < i; j++) combi[i] += combi[j] * combi[i-j-1]; return combi[n]; } }
No comments:
Post a Comment