Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
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
给一个正整数n,然后将这n个数进行二叉排序树的排列,求有多少种组合。
public class Solution { public int numTrees(int n){ if( n < 3) return n; int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; dp[2] = 2; for( int i = 3;i<n+1;i++){ for( int j = 0;j<i;j++){ dp[i] += dp[j]*dp[i-j-1]; } } return dp[n]; } }