96. 不同的二叉搜索树
DP
首先设置有0个节点时有1种排列方式
- 当
n = 0
(二叉树有0个节点)时:
结果dp[0] = 1;
- 当
n = 1
(二叉树有1个节点)时:
左节点0个 右节点0个 可排列 1 * 1
结果:dp[1] = dp[1 - 1] * dp[0]
- 当
n = 2
(二叉树有2个节点)时:
左节点1个 右节点0个 可排列1 * 1 = 1
左节点0个 左节点1个 可排列1 * 1 = 1
结果:dp[2] = dp[2 - 1] * dp[0] + dp[2 - 2] * dp[1]
- 当
n = 3
(二叉树有3个节点)时:
左节点2个 右节点0个 可排列2 * 1 = 2
左节点1个 右节点1个 可排列1 * 1 = 1
左节点0个 左节点2个 可排列1 * 2 = 2</