比赛 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