[Day32-03]-[二叉树] 不同的二叉搜索树
96. 不同的二叉搜索树
一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
示例 1:
复制代码
示例 2:
复制代码
题解:
复制代码
这其实是一个卡特兰数
题解:
复制代码
本文字数:426 字
阅读完需:约 1 分钟
一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
示例 1:
输入:n = 3输出:5
示例 2:
输入:n = 1输出:1
题解:
func TestNumTrees(t *testing.T) { var n = 3 // 题解: // 二叉树节点从[1...n]中选一个,不重复的二叉搜索树,根节点从1..n中取一个数i // 那左侧节点选取1...i,右侧节点选取i+1...n // 左侧有x种取法,右侧有y种取法 G[i] 就有 x·y中组合 // 可以采用动态规划的方式 // 状态转移方程: dp[i] += dp[j-1] * dp[i-1] var dp = make([]int, n+1) // base case dp[0] = 1 dp[1] = 1 for i := 2; i <= n; i++ { // 从2到n for j := 1; j <= i; j++ { // 左侧取j,右侧就是i-j dp[i] += dp[j-1] * dp[i-j] } }
t.Log(dp[n])}这其实是一个卡特兰数
题解:
func numTrees(n int) int { C := 1 for i := 0; i < n; i++ { C = C * 2 * (2*i + 1) / (i + 2) } return C}Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!

促进软件开发及相关领域知识与创新的传播
京公网安备 11010502039052号

评论