uva 11234 Expressions(建立二叉树+层次遍历)
来源:互联网 发布:java的volatile 编辑:程序博客网 时间:2024/04/30 04:30
回学校两天了,算是做的第一道题吧,手有点生,看了别人的题解。。。
暑假期间就致力于刷题了,加油。。。
分析:题目的意思是让重排一下字母的顺序用队列的方式实现他们按照前面所述的出栈方式所实现的表达式,简单地说
就是建立一棵二叉树,然后对它层次遍历,之后逆序输出。
代码:
<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>
0 0
- uva 11234 Expressions(建立二叉树+层次遍历)
- [UVA 11234] Expressions (二叉树的建立与层次遍历)
- UVa 11234 Expressions 二叉树 层次遍历 广搜
- UVA 11234 - Expressions 二叉树建树+BFS 层次遍历
- Uva 11234 Expressions (二叉树的层次遍历)
- UVa 11234 Expressions (二叉树重建&由叶往根的层次遍历)
- uva 11234 Expressions(后缀变层次)
- uva 11234 Expressions 表达式 建树+BFS层次遍历
- 二叉树建立 以及 bfs层次遍历
- 建立平衡二叉树+层次遍历
- java根据层次遍历建立二叉树
- 建立二叉树,并层次遍历输出
- 二叉树建立 ---层次遍历方式
- Uva 11234 - Expressions//数据结构,二叉树
- 二叉树的建立、遍历、深度、高度及层次遍历
- 二叉树的建立及遍历(先序遍历、中序遍历、后续遍历、层次遍历)
- 通过前序(后序), 中序遍历建立二叉树 求解层次遍历
- 二叉树的建立与前、中、后、层次遍历
- 不积跬步无以至千里(五)
- Android基础入门教程——1.10 反编译APK获取代码&资源
- 《深入浅出struts2》--第一章,Model2应用程序
- iOS开发zhiATM机的设计与实现
- 本地搭建Hadoop伪分布式环境之三:FlashFXP上传文件到Ubuntu
- uva 11234 Expressions(建立二叉树+层次遍历)
- Android自己动手打造XML解析框架
- eclipse解决editor does not contain a main type的方法
- Vim技巧之重复
- 初识命令行参数(以my_chmod为例)
- Python绘图基础
- Android 代码混淆打包
- The import java.util cannot be resolved
- 折价买分级基金的教程