UVA 122 二叉树模拟
来源:互联网 发布:it网络设备推广方案 编辑:程序博客网 时间:2024/06/05 09:08
题意:输入一棵二叉树,层序遍历输出二叉树的节点值,结点规模256,如果有结点没有被赋值或者被赋2次以上的值,则输出not complete(照着书做的时候书上输出-1导致程序一直WA)
使用数组模拟二叉树更加简单和方便
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<vector>#include<stack>#include<queue>#include<algorithm>#include<sstream>#define inf 0x3f3f3f3f#define ll long longusing namespace std;const int MAXN=300;int l[MAXN];//存储左结点int r[MAXN];//存储右节点int value[MAXN];//存储节点的值int flag[MAXN];int cnt;int newnode()//建立新节点{ int u=++cnt; l[u]=r[u]=0; flag[u]=0; return u;}int addnode(int v,char *s){ int n=strlen(s); int u=1; for(int i=0;i<=n-2;i++) { if(s[i]=='L') { if(l[u]==0) l[u]=newnode(); u=l[u]; } else { if(r[u]==0) r[u]=newnode(); u=r[u]; } } if(flag[u]==1) return -1; flag[u]=1; value[u]=v; return 0;}void bfs(){ queue<int> q; queue<int> qx; while(!q.empty()) q.pop(); while(!qx.empty()) qx.pop(); q.push(1); bool ff=0; while(!q.empty()) { int t=q.front(); q.pop(); if(flag[t]==0) { ff=1; break; } qx.push(value[t]); if(l[t]!=0) q.push(l[t]); if(r[t]!=0) q.push(r[t]); } if(ff==1) cout<<"not complete"<<endl; else { cout<<qx.front(); qx.pop(); while(!qx.empty()) { cout<<" "<<qx.front(); qx.pop(); } cout<<endl; }}int main(){ char s[MAXN]; while(scanf("%s",s)==1) { if(strcmp(s,"()")==0) continue; l[1]=r[1]=0; flag[1]=0; cnt=1; int v; sscanf(&s[1],"%d",&v); addnode(v,strchr(s,',')+1); bool f=0; while(scanf("%s",s)) { if(strcmp(s,"()")==0) break; int v; sscanf(&s[1],"%d",&v); int x=addnode(v,strchr(&s[1],',')+1); if(x==-1) f=1; } if(f==1) cout<<"not complete"<<endl; else bfs(); } return 0;}
1 0
- UVA 122 二叉树模拟
- UVA 712(二叉树模拟)
- 二叉树--uva 679 Dropping Balls 二叉树数组模拟
- uva 122 二叉树
- uva 122 小球下落 树的模拟
- uva 112(二叉树)
- uva 548(二叉树)
- uva 712(二叉树)
- uva 297(二叉树)
- uva 699(二叉树)
- uva 839(二叉树)
- 【数组二叉树】UVA
- UVa 712/POJ 1105/ZOJ 1150 S-Trees(用数组模拟二叉树)
- 二叉树简单模拟
- UVa 11020 排序二叉树
- uva 10701(简单二叉树)
- 二叉树 UVA 548 Tree
- uva 1354(二叉树+暴力)
- JNIEnv解析
- AOJ.863 分书问题 (DFS)
- 《Cracking the Coding Interview程序员面试金典》----链表A+B
- WPF 使用INotifyDataErrorInfo小例子
- zzulioj 2132 Tmk吃汤饭(模拟)
- UVA 122 二叉树模拟
- JAVA SWING 初学
- 欢迎使用CSDN-markdown编辑器
- Android 读取上一个应用的数据库
- 2017年4月28日,周结(十),复习Java巩固基础,温故而知新
- 计算机 内存CPU 硬盘
- Delphi 2010安装及使用UniDAC安装和使用
- 算法导论复习(2) 归并排序
- AOJ.865 青铜莲花池 (BFS)