BUAA OJ 749 DH的二叉搜索树
来源:互联网 发布:福州云顶网络智联 编辑:程序博客网 时间:2024/06/17 20:59
题目描述
DH喜欢树,但更喜欢一些特殊的树,因为它们长得好看,今天他想来跟大家聊一聊二叉搜索树,什么叫二叉搜索树,首先它是一棵二叉树,其次,这棵树的每个节点的值都不一样且对于每一个节点它的左子树的任何节点的值都比它的值小,右子树的任何节点的值都比它的值大。现在DH想知道由值为1,2,3,…,n的n个节点组成的二叉搜索树里,高度不小于h的有多少?
输入
多组输入数据,每组输入数据一行,包含两个数n(1≤n≤35),h(1≤h≤n)
输出
每组数据输出一行,为该组数据对应的答案
输入样例
1 1
输出样例
1
解题思路
一个二叉搜索树可以看作根节点和它的左右子树构成的。
而所有节点都是互异的。
所以所有二叉搜索树的个数就是卡特兰数。
高度不小于h的所有二叉树的个数可以用二维的动态规划解决
在上一个问题的基础上,添加一维为树的高度。
树的高度=max(左子树的高度,右子树的高度)+1。
AC代码
#include <stdio.h>typedef long long ll;ll a[36][36];int main(){ a[0][0]=a[1][1]=1; for(int i=2;i<36;i++) for(int j=0;j<i;j++) for(int k=0;k<=j;k++) for(int l=0;l<i-j;l++) a[i][(k>l?k:l)+1]+=a[j][k]*a[i-j-1][l]; int n,h; ll cnt; while(~scanf("%d%d",&n,&h)){ cnt=0; for(int i=h;i<36;i++) cnt+=a[n][i]; printf("%lld\n",cnt); }}
阅读全文
0 0
- BUAA OJ 749 DH的二叉搜索树
- BUAA OJ 701 DH的矩阵游戏
- BUAA OJ 亚顿的幻方
- BUAA OJ 344 拮据的模拟城市
- BUAA OJ 382 中世界的Thor
- 九度OJ 1009: 二叉搜索树 两棵树的判等+二叉搜索树的建立
- 二叉搜索树的建立与遍历 九度oj
- 九度OJ 1009 二叉搜索树
- 九度oj-1009-二叉搜索树
- 九度OJ - 1009 - 二叉搜索树
- 九度OJ 1009 二叉搜索树
- 九度OJ-1009-二叉搜索树
- 九度OJ 1009 二叉搜索树
- BUAA OJ 761 Mdd的信(哈夫曼树)
- 九度OJ 1009:二叉搜索树 (二叉树)
- BUAA OJ 166 回文数
- BUAA OJ 94 双层汉诺塔
- 九度oj 题目1367:二叉搜索树的后序遍历序列
- hdu 6119/2017百度之星初赛B——小小粉丝度度熊(尺取/贪心)
- 创建Zigbee Z-Stack 3.0.1 BSP(二)--Z-Stack协议栈目录结构
- 常用的网络权限
- 2017.08.11【NOIP提高组】模拟赛B组 小X的佛光
- TensorFlow之3 实现自编码器
- BUAA OJ 749 DH的二叉搜索树
- 训练日记-12
- OSI模型层次
- 【模拟试题】德雷克的追捕
- spingmvc实现附件单个和打包下载
- 网易2017——堆棋子
- Java基础知识之泛型
- MySql 优化
- Css3 常用选择器 背景 边框 渐变