比赛 |
20160407树结构练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
树的层次遍历 |
最终得分 |
100 |
用户昵称 |
KZNS |
运行时间 |
0.014 s |
代码语言 |
C++ |
内存使用 |
0.29 MiB |
提交时间 |
2016-04-07 20:49:23 |
显示代码纯文本
//KZNS
#include <fstream>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
/////////
ifstream fin ("vlevel.in");
ofstream fout ("vlevel.out");
//--------
string s;
int l[300] = {0}, r[300] = {0}, v[300] = {0};
bool ud[300] = {0};
int tru = 1;
bool fff = true;
/////////
void inst() {
int a = 0;
int k;
for (k = 1; s[k]!=','; k++)
a = a*10+s[k]-'0';
int t = 0;
for (k++; s[k]!=')'; k++) {
if (s[k] == 'L') {
if (l[t])
t = l[t];
else
t = l[t] = tru++;
}
else {
if (r[t])
t = r[t];
else
t = r[t] = tru++;
}
}
if (ud[t])
fff = false;
else {
ud[t] = true;
v[t] = a;
}
}
void ot() {
vector<int> ls;
ls.push_back(0);
for (int i = 0; i < ls.size(); i++) {
if (!ud[ls[i]]) {
fff = false;
break;
}
if (l[ls[i]])
ls.push_back(l[ls[i]]);
if (r[ls[i]])
ls.push_back(r[ls[i]]);
}
if (!fff) {
fout << "not complete" << endl;
return;
}
for (int i = 0; i < ls.size(); i++)
fout << v[ls[i]] << ' ';
fout << endl;
}
//----main-------
int main() {
while (fin >> s) {
if (s == "()") {
ot();
memset(l, 0, sizeof(l));
memset(r, 0, sizeof(r));
memset(v, 0, sizeof(v));
memset(ud, 0, sizeof(ud));
fff = true;
}
else {
inst();
}
}
return 0;
}
//UBWH