P2171 Hz吐泡泡

题目描述

这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡)。因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树)。输出它的后序遍历。

BST插入操作模板

BST学习

#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
typedef struct node;
typedef node *tree;
struct node{
int x,dep;
tree lc,rc;
}*tr; int maxdep;
void insert(tree& bt,int n,int deep){
if(bt){
if(n<=bt->x) insert(bt->lc,n,deep+);
else insert(bt->rc,n,deep+);
}else{
bt=new node;
bt->x=n;
bt->dep=deep;
bt->lc=bt->rc=NULL;
maxdep=max(maxdep,deep);
}
}
int n;
void cou(tree bt){
if(bt){
cou(bt->lc);
cou(bt->rc);
printf("%d\n",bt->x);
}
}
int main()
{
scanf("%d",&n);
for(int x,i=;i<=n;i++){
scanf("%d",&x);
insert(tr,x,);
}
printf("deep=%d\n",maxdep);
cou(tr);
return ;
}

递归版的BST操作总结

void preorder(tree bt) { //先序遍历根结点为bt的二叉树的递归算法
if(bt) {
cout << bt->data;
preorder(bt->lchild);
preorder(bt->rchild);
}
}

先序遍历

void inorder(tree bt)  //中序遍历根结点为bt的二叉树的递归算法
{
if(bt)
{
    inorder(bt->lchild);
    cout << bt->data;
    inorder(bt->rchild);    
}    
}

中序遍历

void postorder(tree bt) { //后序遍历根结点为bt的二叉树的递归算法
if(bt) {
postorder(bt->lchild);
postorder(bt->rchild);
cout << bt->data;
}
}

后序遍历

void pre_crt(tree &bt) { //按先序次序输入二叉树中结点的值,生成
char ch;
ch = getchar(); //二叉树的单链表存储结构,bt为指向根结点的指针,'$'表示空树
if(ch != '$') {
bt = new node; //建根结点
bt->data = ch;
pre_crt(bt->lchild); //建左子树
pre_crt(bt->rchild); //建右子树
} else bt = NULL;
}

1.建立二叉树

void dis(tree &bt) {         //删除二叉树
if(bt) {
dis(bt->lchild); //删左子树
dis(bt->rchild); //删右子树
delete bt; //释放父结点
}
}

2.删除二叉树

void insert(tree &bt, int n) {  //插入一个结点到排序二叉树中
if(bt) {
if(n < bt->data) insert(bt->lchild, n);
else if(n > bt->data) insert(bt->rchild, n);
} else {
bt = new node; //新开一个空间
bt->data = n;
bt->lchild = bt->rchild = NULL;
}
}

3.插入一个数到BST中

tree findn(tree bt, int n) { //在二叉树中查找一个数,找到返回该结点,否则返回NULL。
if(bt) {
if(n < bt->data) findn(bt->lchild, n);
else if(n > bt->data) findn(bt->rchild, n);
else return bt;
} else return NULL;
}

4.在BST中查找一个数

void print(tree bt) {         //用嵌套括号表示法输出二叉树
if(bt) {
cout << bt->data;
if(bt->lchild || bt->rchild) {
cout << '(';
print(bt->lchild);
if(bt->rchild) cout << ',';
print(bt->rchild);
cout << ')';
}
}
}

5.用嵌套括号法输出二叉树

洛谷——P2171 Hz吐泡泡的更多相关文章

  1. 洛谷 P2171 Hz吐泡泡

    P2171 Hz吐泡泡 题目背景 Hz大大是一种可爱的动物(神).他很喜欢吐泡泡(更喜欢写作业). 题目描述 这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡).因为他还要写作业,所以 ...

  2. 洛谷 P2587 BZOJ 1034 [ZJOI2008]泡泡堂

    题目描述 //不知道为什么BZOJ和洛谷都没有这幅图了,大牛们几年前的博客上都有这幅图的,把它贴上来吧 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省 ...

  3. NOIP2017提高组Day2T3 列队 洛谷P3960 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...

  4. BZOJ1057或洛谷1169 [ZJOI2007]棋盘制作

    BZOJ原题链接 洛谷原题链接 设\(L[i][j],R[i][j],H[i][j]\)表示点\((i,j)\)向左.右.上尽量拓展的左端点.右端点.上端点的坐标. \(L,R\)直接初始化好,\(H ...

  5. 【贪心】洛谷2019 OI春令营 - 普及组 作业

    [P3817 小A的糖果 小A有N个糖果盒,第i个盒中有a[i]颗糖果. 小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖. [贪 ...

  6. 莫比乌斯反演进阶-洛谷P2257/HDU5663

    学了莫比乌斯反演之后对初阶问题没有任何问题了,除法分块也码到飞起,但是稍微变形我就跪了.用瞪眼观察法观察别人题解观察到主要内容除了柿子变形之外,主要就是对于miu函数的操作求前缀和.进而了解miu函数 ...

  7. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  8. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

随机推荐

  1. css3 3d特效汇总

    本篇全是实战,没有基础,如果不明白3d特效的原理,可能会看不懂,不过没关系,给你推荐一下 张鑫旭css3 3d转换,或者看我的另一篇博客  css3 2d转换3d转换以及动画的知识点汇总,看完这些3d ...

  2. HDU5806 NanoApe Loves Sequence Ⅱ

    NanoApe Loves Sequence Ⅱ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Ja ...

  3. YTU 2639: 改错题:类中私有成员的访问

    2639: 改错题:类中私有成员的访问 时间限制: 1 Sec  内存限制: 128 MB 提交: 431  解决: 297 题目描述 /* 改错题: 设计一个日期类和时间类,并编写全局函数displ ...

  4. 雅礼集训 2017 Day1

    T1:loj 6029 市场 题目大意: 维护一个数据结构支持区间加 区间除法 区间求最小值 区间求和 思路: 用线段树维护区间加 区间求最小值 区间和 对于区间除法 注意到除数d很大而加法的w很小 ...

  5. 【POI 2010】 Pilots

    [题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 3000010 ...

  6. MQTT + apache-apollo服务器初学使用

    说明:MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通 ...

  7. ionic2.1.0 --beta3版本新建页面做弹框时遇到的问题

    新建的页面需要在app.module.ts文件中定义.不然制作页面弹出效果是会报错.

  8. 键盘按钮keyCode大全:获取按键对应的键值的方法

    没有大全,只有方法,授人与鱼不如授人于渔: 下面这行代码,大家可以打在控制台里,直接进行测试: document.body.onkeyup = function (e) { e = e || wind ...

  9. hdu2032

    http://acm.hdu.edu.cn/showproblem.php?pid=2032 #include<stdio.h> #include<math.h> #inclu ...

  10. Spring.Net学习笔记(7)-事务

    一.开发环境 操作系统:Win7 编译器:VS2010 二.涉及程序集 Spring.Core.dll Spring.Data.dll Common.Logging.dll 三.开发过程 1.项目结构 ...