原题链接在这里:https://leetcode.com/problems/unique-binary-search-trees/
对于选取的点,它的返回值应该是它的不同左子树的个数*他的不同右子树的个数。
边界调节,当n=0时,返回1,只返回一个空树,当n=1时,返回1,只有一个节点的树。
AC Java:
public class Solution {
public int numTrees(int n) {
int[] arr = new int[n+1];
arr[0] = 1;
arr[1] = 1;
for(int i = 2; i<=n; i++){
for(int j = 0; j < i; j++){
arr[i]+=arr[j]*arr[i-1-j];
}
}
return arr[n];
}
}
进阶版还有Unique Binary Search Trees II.