首页 > 试题广场 >

二叉树

[编程题]二叉树
  • 热度指数:8063 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
小强现在有个节点,他想请你帮他计算出有多少种不同的二叉树满足节点个数为且树的高度不超过的方案.因为答案很大,所以答案需要模上1e9+7后输出.
树的高度: 定义为所有叶子到根路径上节点个数的最大值.
例如: 当n=3,m=3时,有如下5种方案:
数据范围:
进阶:时间复杂度,空间复杂度

输入描述:
第一行输入两个正整数.



输出描述:
输出一个答案表示方案数.
示例1

输入

3 3

输出

5
示例2

输入

3 2

输出

1
示例3

输入

4 3

输出

6
头像 呆呆呆呆鸟
发表于 2025-01-20 20:45:03
题目:二叉树 题意 已知一颗二叉树有 n 个结点,问能构造出多少种高度不超过 m 的二叉树。 题解 对子树分治,左孩子依次为 0 ~ n-1 个结点,右孩子就是 n-1 ~ 0 这样去分治 n=0,那就是空树,就是 1 种方案 m=0,高度为 0,除了空树,不可能有高度为 0 的树,方案数为0 左 展开全文
头像 工科数学分析基础
发表于 2025-03-18 15:43:08
import sys from typing import List from functools import lru_cache import bisect n, m = map(int, input().split()) mod = 1000000007 class Solution: 展开全文
头像 pyclin
发表于 2025-08-31 21:47:25
题目分析 有两个可变参数:节点个数n和最大高度m。可以发现求每棵树及其子树的方法类似只是参数数值不同,符合大问题转小问题,尝试递归解决 递归写法 // 记忆化搜索 vector<vector<int>> dp(n+1, m+1); // 为了看得更直观没有取余 // 两个参数 展开全文
头像 YYHDNDX
发表于 2025-02-25 20:55:40
#include<bits/stdc++.h> #define ll long long using namespace std; const static ll mod=1000000007; int n,m; ll dp[51]; int main() { cin.tie(0 展开全文
头像 工科数学分析基础
发表于 2025-03-18 15:42:19
import sys from typing import List from functools import lru_cache import bisect n, m = map(int, input().split()) mod = 1000000007 class Solution: 展开全文
头像 牛客883901697号
发表于 2024-05-14 18:47:06
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWr 展开全文
头像 牛客883901697号
发表于 2024-05-14 19:16:16
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWr 展开全文