http://acm.hdu.edu.cn/showproblem.php?pid=1622

白书上6.3.2二叉树层次遍历的例题,层次遍历用bfs,建立二叉树,很基础的题目

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue> using namespace std; struct node{
int vis,v;
node *l,*r;
}; node *root; node* newnode(){
node *u=new node;
if(u!=NULL){
u->vis=;
u->l=u->r=NULL;
}
return u;
} int failed; void addnode(int v,char* s){
int len=strlen(s);
node* u=root;
for(int i=;i<len;i++){
if(s[i]=='L'){
if(u->l==NULL)u->l=newnode();
u=u->l;
}
else if(s[i]=='R'){
if(u->r==NULL)u->r=newnode();
u=u->r;
}
}
if(u->vis)failed=;
u->v=v;
u->vis=;
} char s[]; void remove_tree(node* u){
if(u==NULL)return;
remove_tree(u->l);
remove_tree(u->r);
delete u;
} int input(){
failed=;
remove_tree(root);
root=newnode();
while(){
if(scanf("%s",s)==EOF)return ;
if(!strcmp(s,"()"))break;
int v;
sscanf(&s[],"%d",&v);
addnode(v,strchr(s,',')+);
}
return ;
} int st,ans[]; int bfs(){
queue <node*> q;
q.push(root);
while(!q.empty()){
node* u=q.front();
q.pop();
if(u->vis==)return ;
ans[st++]=u->v;
if(u->l!=NULL)q.push(u->l);
if(u->r!=NULL)q.push(u->r);
}
return ;
} int main(){
while(input()){
if(failed)puts("not complete");
else{
st=;
if(!bfs())puts("not complete");
else{
for(int i=;i<st;i++){
if(!i)
printf("%d",ans[i]);
else
printf(" %d",ans[i]);
}
putchar('\n');
}
}
}
return ;
}

HDU 1622的更多相关文章

  1. hdu 1622 Trees on the level

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1622 小白书上的题... #include<algorithm> #include< ...

  2. hdu 1622 Trees on the level(二叉树的层次遍历)

    题目链接:https://vjudge.net/contest/209862#problem/B 题目大意: Trees on the level Time Limit: 2000/1000 MS ( ...

  3. 【二叉树】hdu 1622 Trees on the level

    [题意] 给定一棵树每个结点的权重和路径(路径用LR串表示),输出这棵树的层次遍历 [思路] 注意输入输出,sscanf用来格式化地截取需要的数据,strchr来在字符串中查找字符的位置 [Accep ...

  4. HDU - 1622 用到了层次遍历

    题意: 给出一些字符串,由(,)包着,表示一个节点,逗号前面是节点的值,后面是节点从根节点走向自己位置的路线,输入以( )结尾,如果这组数据可以构成一个完整的树,输出层次遍历结果,否则输出not co ...

  5. hdu 1704 (Floyd 传递闭包)

    Rank Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

  7. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. 2016年31款轻量高效的开源JavaScript插件和库

    目前有很多网站设计师和开发者喜欢使用由JavaScript开发的插件和库,但同时面临一个苦恼的问题:它们中的大多数实在是太累赘而且常常降低网站的性能.其实,其中也有不少轻量级的插件和库,它们不仅轻巧有 ...

  2. Eclipse添加jsp页面后引入java指令报错解决方法

    新建jsp页面老提示: Multiple annotations found at this line: - The superclass "javax.servlet.http.HttpS ...

  3. Objective-C:Foundation框架-概述

    iOS的整体架构(以iOS8为例)图如下: 从Cocoa Touch到Core OS下面四层包含了开发iOS应用程序所用到的所有API(第三方框架也是基于这几个层的).每个层又都包含了许多框架.框架就 ...

  4. Html5新标签解释及用法

    Html5新标签解释及用法 HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准.它希望能够减少浏览器对于需要 ...

  5. 实验一 Java开发环境的熟悉境的熟悉

    - 运行结果: (一)命令行下Java程序开发 (二)Eclipse下Java程序开发.调试 设置断点和单步运行 单步运行:Step Into(快捷捷F5)和Step Over(快捷捷F5) 使程序直 ...

  6. QQ输入法评价

    用户界面: 用户可以通过登录QQ展现自己的QQ头像,可以点击头像显示用户信息,可以中英文切换,全半角切换,打开属性设置,以为软键盘 记住用户选择: 当用户使用QQ输入法时,QQ输入法可以记住用户当前的 ...

  7. Oracle select case when

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. Octopus系列之关于多选属性如何在OO中表示呢?

    在电子商务系统中 关于产品属性的问题 会设计如下几个表 产品信息        Product 选项信息表     Option        存储 Size  Color.... 选项值信息表  O ...

  9. 基础的 Linux 网络命令,你值得拥有

    导读 有抱负的 Linux 系统管理员和 Linux 狂热者必须知道的.最重要的.而且基础的 Linux 网络命令合集.在 It's FOSS 我们并非每天都谈论 Linux 的"命令行方面 ...

  10. S1 :闭包

    闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常见方式,就是在一个函数内部创建另一个函数,以createComparisonFunction()函数为例 function createCo ...