生活的烦恼 nsoj
来源:互联网 发布:《linux就该这么学 编辑:程序博客网 时间:2024/06/11 14:41
生活的烦恼
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题。那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树,然后再给你一个整数n,让生活输出这颗二叉树的第n(n>0且n<=树的深度)层,出题者为了给生活降低难度,要求两个输出数据之间用'~'隔开。看来我们的出题人很有爱啊!
- 输入
- 第一行输入一个数N,表示有N组测试数据。接下来N行,每行一个字符串,用'#'表示为空的节点,树的结束标志为'@'。'@'后仅有一个空格,空格后为一个数字,表示生活要输出的二叉树的第几层!
- 输出
- 每行输出一个字符串,表示给出二叉树的第n层!
- 样例输入
21 2 # # 3 # # @ 15 7 3 # # # 4 # # @ 3
- 样例输出
13
- 提示
- 5 第一层
/ \
7 4 第二层
/
3 第三层 - 来源
- 爱生活
- 上传者
- TCM_张鹏
思路:题目容易理解,给你一行数字,按照前序遍历建立一个二叉树,#代表空格,数据正好的@前面可以建立好二叉树,我们需要在建立时标记层数(可以在树的结构体中加一个变量,用来表示层数),再写一个前序遍历函数,再函数中把要求的层数中的数输出来。
代码很简单。
#include <stdio.h>#include <string.h>#include <iostream>using namespace std;struct node{ char val[100]; int k; node *left,*right;};node* build(int k){ node *p; char s[100]; scanf("%s",s); if(s[0]=='#') p=NULL; else { p=new node ; strcpy(p->val,s); p->k=k; p->left= build(k+1); p->right= build(k+1); } return p;}int k,flag;void dfs(node* p){ if(p) { if(p->k==k) { if(!flag) printf("%s",p->val); else printf("~%s",p->val); flag=1; return; } dfs(p->left); dfs(p->right); }}int main(){ int t; scanf("%d",&t); while(t--) { flag=0; node *root=NULL; char s[100]; root=build(1); scanf("%s %d",s,&k); dfs(root); printf("\n"); } return 0;}
阅读全文
0 0
- 生活的烦恼 nsoj
- 生活的烦恼
- 生活的烦恼
- NYOJ1063_生活的烦恼
- 生活的烦恼
- 1603 生活的烦恼
- nyoj-1063 生活的烦恼
- NYOJ 1063 生活的烦恼
- NYOJ 1063 生活的烦恼
- NSOJ 国王的魔镜
- NSOJ 阶乘的0
- NSOJ
- nyoj_1063生活的烦恼(二叉树)
- nsoj 5696 最大的数
- NSOJ D的小L
- 生活随笔:烦恼
- 程序员的烦恼---没有前途的驴一般的生活
- NYOJ1063 生活的烦恼(二叉树的建立)
- loadrunner之资源监控与分析
- jstl自定义标签
- Office2007打开文件提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致”的解决办法
- 集合框架
- 智慧停车市场解决方案
- 生活的烦恼 nsoj
- Attempt to invoke virtual method 'int com.jishang.yunji.ui.ActivityPublishDynamic$DynamicType.ordina
- NYOJ 83-迷宫寻宝(二)(计算几何->线段相交)
- angular2项目下载后运行以及报错,The "@angular/compiler-cli" package was not properly installed
- 手机灭屏之后,来短信或者信息亮屏5s之后再黑屏
- Java记事本实现
- 关于JAVA之访问限制错误:由于对必需的库具有一定限制,因此无法访问类型
- Scrapy五大组件介绍
- 很有意思的几个网站