n, m = map(int, input().split(' '))
MOD = 10**9 + 7
from functools import lru_cache
def binary_tree(n, m):
@lru_cache(maxsize=None) # 去除缓存限制
# k是节点数,h是高度
def dfs(k, h):
if k == 0:
return 1
if h == 0:
return 0
if k == 1:
return 1
total = 0
for i in range(k):
# h-1高度下 左子树和右子树的 方案数
left = dfs(i, h-1)
right = dfs(k-i-1, h-1)
total = (total + left * right) % MOD
return total
return dfs(n, m) % MOD
print(binary_tree(n, m))
MOD = 10**9 + 7
from functools import lru_cache
def binary_tree(n, m):
@lru_cache(maxsize=None) # 去除缓存限制
# k是节点数,h是高度
def dfs(k, h):
if k == 0:
return 1
if h == 0:
return 0
if k == 1:
return 1
total = 0
for i in range(k):
# h-1高度下 左子树和右子树的 方案数
left = dfs(i, h-1)
right = dfs(k-i-1, h-1)
total = (total + left * right) % MOD
return total
return dfs(n, m) % MOD
print(binary_tree(n, m))
#牛客试题# 小强现在有个节点,他想请你帮他计算出有多少种不同的二叉树满足节点个数为且树的高度不超过的方案.因为答案很大,所以答案需要模上1e9+7后输出. 树的高度: 定义为所有叶子到根路径上节点个数的最大值....
https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2FquestionTerminal%2Faaefe5896cce4204b276e213e725f3ea%3FanswerType%3D1%26f%3Ddiscussion
全部评论
相关推荐
点赞 评论 收藏
分享
2025-12-14 15:46
江西财经大学 运维工程师 点赞 评论 收藏
分享
查看16道真题和解析