给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?
解题思路
*数组含义:dp[i] i个节点的不同组成结构
状态转移:任取节点为根节点,遍历左右子树可能出现的个数,dp[i]=dp[left]dp[right]
初始化:dp[0]=1 空节点也作为一种情况
代码
class Solution {public int numTrees(int n) {int[] dp=new int[n+1];dp[0]=1;for(int i=1;i<=n;i++){int total=i-1;for(int j=total;j>=0;j--)dp[i]+=dp[j]*dp[total-j];}return dp[n];}
}