解题思路:
输入n=3
n = 0 1个
n = 1 1个
n = 2 2个
头1+头2+头3
头1 = 左子树0节点(个数)x右子树2个节点(个数)
头2 = 左子树1节点(个数)x右子树1个节点(个数)
头3 = 左子树2节点(个数)x右子树0个节点(个数)
dp含义:
dp3 = dp0 *dp2 + dp1 *dp1 + dp2 * dp0
递推公式:
dpi += dpj-1 * dpi-j
j相当于是头节点的元素,j-1相当于以j为头节点左子树节点数量,i-j以j为头节点右子树节点数量
将i遍历到j,进行累加
初始化:
dp0 = 1
dp1 = 1(可以从递推公式推出来,可以不初始化0)
遍历顺序:
从左往右,根据递推公式可知
代码实现:(最后如果结果有问题,记得打印dp数组)
