写点什么

[Day32-03]-[二叉树] 不同的二叉搜索树

作者:方勇(gopher)
  • 2022 年 5 月 01 日
  • 本文字数:426 字

    阅读完需:约 1 分钟

96. 不同的二叉搜索树

一个整数 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,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!

评论

发布
暂无评论
[Day32-03]-[二叉树]不同的二叉搜索树_LeetCode_方勇(gopher)_InfoQ写作社区