uva 11234 Expressions(建立二叉树+层次遍历)
2015-07-20 09:10
435 查看
回学校两天了,算是做的第一道题吧,手有点生,看了别人的题解。。。
暑假期间就致力于刷题了,加油。。。
分析:题目的意思是让重排一下字母的顺序用队列的方式实现他们按照前面所述的出栈方式所实现的表达式,简单地说
就是建立一棵二叉树,然后对它层次遍历,之后逆序输出。
代码:
暑假期间就致力于刷题了,加油。。。
分析:题目的意思是让重排一下字母的顺序用队列的方式实现他们按照前面所述的出栈方式所实现的表达式,简单地说
就是建立一棵二叉树,然后对它层次遍历,之后逆序输出。
代码:
<span style="font-size:18px;">#include<stdio.h> #include<string.h> #include<stdlib.h> #include<stack> using namespace std; char a[10005]; struct node { char val; node* l; node* r; }; char ans[10005]; int sum; int bfs(node *root) { int front = 0; int rear = 1; sum=0; node *q[10005]; q[0] = root; while(front<rear) { node *u = q[front++]; ans[sum++] = u->val; if(u->l!=NULL) q[rear++] = u->l; if(u->r!=NULL) q[rear++] = u->r; } return 0; } int main() { int T; int i,j; node* m,*n; stack<node*>s; scanf("%d",&T); while(T--) { scanf("%s",a); int len = strlen(a); for(i=0; i<len; i++) { if(a[i]>='a'&&a[i]<='z') { node *p = new node; p->val = a[i]; p->l = p->r = NULL; s.push(p); } else { m=s.top(); s.pop(); n=s.top(); s.pop(); node *q = new node; q->val = a[i]; q->l = n; q->r = m; s.push(q); } } bfs(s.top()); for(i=sum-1; i>=0; i--) printf("%c",ans[i]); puts(""); } return 0; }</span>
相关文章推荐
- 本地搭建Hadoop伪分布式环境之三:FlashFXP上传文件到Ubuntu
- eclipse常用的快捷键
- java中的构造方法的使用及作用分析
- 《深入浅出struts2》--第一章,Model2应用程序
- linux安装IPython四种方法
- 基于animation.css实现动画旋转特效
- thinkphp No input file specified的解决方法
- Android基础入门教程——1.10 反编译APK获取代码&资源
- linux下找到程序运行的位置
- Android源码之DeskClock (三) Proxy/Delegate Application 框架应用
- javascript学习之位置获取
- 新装GI的ASM无法直接restore/11g以前RDBMS无法直接访问11gASM
- HashMap的工作原理总结
- HDU oj wod sticks
- 学习锐捷交换机的个人心得
- linux安装ftp
- C++ STL学习之stack
- 跟我一起写 Makefile 陈皓
- LeeCode-Delete Node in a Linked List
- 如何学习大数据 以及大数据解决的问题