# UVA122 Trees on the level

### 题目链接戳这里

/*  UVA 122
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <set>
#define pi acos(-1.0)
#define LL long long
#define ULL unsigned long long
#define inf 0x3f3f3f3f
#define INF 1e18
//#define lson l,mid,rt<<1
//#define rson mid+1,r,rt<<1|1
#define debug(a) printf("---%d---\n", a);
#define mem0(a) memset(a, 0, sizeof(a))
#define memi(a) memset(a, inf, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
using namespace std;
typedef pair<int, int> P;
const double eps = 1e-10;
const int maxn = 1e6 + 5;
const int mod = 1e8;

int failed, node;
struct Node{
int val, flag;
Node* lson;
Node* rson;
}tree[maxn];
Node* NewNode(){
Node* p = &tree[node++];
p->flag = p->val = 0;
p->lson = p->rson = NULL;
return p;
}
void addnode(Node* root, int v, char* s){
Node* p = root;
for (int i = 0; i < strlen(s); i++){ // 从根节点往下走
if (s[i] == 'L'){
if (p->lson == NULL) p->lson = NewNode(); // 结点不存在,建立新结点
p = p->lson;   // 往左走
}
else if (s[i] == 'R'){
if (p->rson == NULL) p->rson = NewNode();
p = p->rson;
}
}
if (p->flag) failed = 1; // 若此结点已经被赋值 failed
p->val = v;
p->flag = 1;
}
void bfs(Node* root, vector<int>* ans)
{
queue<Node*> q;
q.push(root);
while (!q.empty()){
Node* p = q.front(); q.pop();
if (p->flag == 0){
failed = 1;
}
(*ans).push_back(p->val);
if (p->lson != NULL) q.push(p->lson);
if (p->rson != NULL) q.push(p->rson);
}
}
int main(void)
{
//  freopen("C:\\Users\\wave\\Desktop\\NULL.exe\\NULL\\in.txt","r", stdin);
char s[35], str[35];
int v, i;
while (~scanf("%s", s))
{
failed = node = 0;
Node* root = NewNode();  // 根节点
if (strcmp(s, "()") != 0){
sscanf(s, "(%d,%s", &v, str); // 一种写法
}else continue;
while (~scanf("%s", s)){
if (strcmp(s, "()") == 0) break;
sscanf(&s[1], "%d", &v); // 另一种写法
}
vector<int> ans;
if (!failed) bfs(root, &ans);
if (failed) puts("not complete");
else {
for (i = 0; i < ans.size(); i++)
printf("%d%c", ans[i], i+1==ans.size()?'\n':' ');
}
}
return 0;
}

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <set>
#define pi acos(-1.0)
#define LL long long
#define ULL unsigned long long
#define inf 0x3f3f3f3f
#define INF 1e18
//#define lson l,mid,rt<<1
//#define rson mid+1,r,rt<<1|1
#define debug(a) printf("---%d---\n", a)
#define mem0(a) memset(a, 0, sizeof(a))
#define memi(a) memset(a, inf, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
using namespace std;
typedef pair<int, int> P;
const double eps = 1e-10;
const int maxn = 1e6 + 5;
const int mod = 1e8;

int failed, node;
struct Node{
int val, flag;
int lson, rson;
}tree[maxn];
int NewNode(){
tree[++node].val = 0;
tree[node].flag = 0;
tree[node].lson = 0;
tree[node].rson = 0;
return node;
}
void addnode(int rt, int v, char* s){
for (int i = 0; i < strlen(s); i++){
if (s[i] == 'L'){
if (!tree[rt].lson)
tree[rt].lson = NewNode();
rt = tree[rt].lson;
}
else if (s[i] == 'R'){
if (!tree[rt].rson)
tree[rt].rson = NewNode();
rt = tree[rt].rson;
}
}
if (tree[rt].flag) failed = 1;
tree[rt].val = v;
tree[rt].flag = 1;
}
vector<int> bfs(int rt){
queue<int> q;
q.push(rt);
vector<int> ans;
while (!q.empty()){
int u = q.front(); q.pop();
if (tree[u].flag == 0){
failed = 1;
break;
}
ans.push_back(tree[u].val);
if (tree[u].lson) q.push(tree[u].lson);
if (tree[u].rson) q.push(tree[u].rson);
}
return ans;
}
int main(void)
{
//  freopen("C:\\Users\\wave\\Desktop\\NULL.exe\\NULL\\in.txt","r", stdin);
char s[35], str[35];
int v, i;
while (~scanf("%s", s))
{
failed = node = 0;
int root = NewNode();    // 根节点
if (strcmp(s, "()") != 0){
sscanf(s, "(%d,%s", &v, str); // 一种写法
}else continue;
while (~scanf("%s", s)){
if (strcmp(s, "()") == 0) break;
sscanf(&s[1], "%d", &v); // 另一种写法
}
vector<int> ans;
if (!failed) ans = bfs(root);
if (failed) puts("not complete");
else {
for (i = 0; i < ans.size(); i++)
printf("%d%c", ans[i], i+1==ans.size()?'\n':' ');
}
}
return 0;
}

• 本文已收录于以下专栏：

## [UVA122]Trees on the level

• lxz19971204
• 2017年03月31日 20:08
• 193

## uva122 trees on the level

• a197p
• 2015年01月31日 23:17
• 344

## UVA122 - Trees on the level

• RonggeRace
• 2015年03月03日 00:34
• 203

## UVa122 Trees on the level

• squee_spoon
• 2014年09月02日 19:38
• 311

## UVA122 trees on the level(BFS)

• a197p
• 2015年02月06日 08:49
• 240

## UVa122：Trees on the level

• c602273091
• 2017年02月24日 01:07
• 549

## UVA122 Trees on the level【二叉树】【BFS】

• u011676797
• 2014年12月11日 09:23
• 1218

## UVA122 Trees on the level（二叉树建立与遍历）

• ACM_Fish
• 2016年12月08日 21:36
• 219

## Trees on the level（UVA122,二叉树的建立）

Background Trees are fundamental in many branches of computer science. Current state-of-the art p...
• longshanxiaoxuesheng
• 2016年03月22日 17:30
• 145

## Uva122 Trees on the level 二叉树的数组实现

• jijijix
• 2016年08月12日 18:11
• 214

举报原因： 您举报文章：UVA122 Trees on the level 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)