# UVA-122-TREE ON THE LEVEL

## subject

Trees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines’ CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics.

This problem involves building and traversing binary trees.

The Problem

Given a sequence of binary trees, you are to write a program that prints a level-order traversal of each tree. In this problem each node of a binary tree contains a positive integer and all binary trees have have fewer than 256 nodes.

In a level-order traversal of a tree, the data in all nodes at a given level are printed in left-to-right order and all nodes at level k are printed before all nodes at level k+1.

For example, a level order traversal of the tree

picture28

is: 5, 4, 8, 11, 13, 4, 7, 2, 1.

In this problem a binary tree is specified by a sequence of pairs (n,s) where n is the value at the node whose path from the root is given by the string s. A path is given be a sequence of L’s and R’s where L indicates a left branch and R indicates a right
branch. In the tree diagrammed above, the node containing 13 is specified by (13,RL), and the node containing 2 is specified by (2,LLR). The root node is specified by (5,) where the empty string indicates the path from the root to itself. A binary tree is
considered to be completely specified if every node on all root-to-node paths in the tree is given a value exactly once.

The Input

The input is a sequence of binary trees specified as described above. Each tree in a sequence consists of several pairs (n,s) as described above separated by whitespace. The last entry in each tree is (). No whitespace appears between left and right parentheses.

All nodes contain a positive integer. Every tree in the input will consist of at least one node and no more than 256 nodes. Input is terminated by end-of-file.

The Output

For each completely specified binary tree in the input file, the level order traversal of that tree should be printed. If a tree is not completely specified, i.e., some node in the tree is NOT given a value or
a node is given a value more than once, then the string “not complete” should be printed.

Sample Input

(11,LL) (7,LLL) (8,R)
(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()
(3,L) (4,R) ()

Sample Output

5 4 8 11 13 4 7 2 1

not complete

## My code:

//uva_122_trees_on_the_level
#include "iostream"
#include "cstdio"
#include "cmath"
#include "cstring"
#include "algorithm"
#include "queue"

#define MAX 10010

using namespace std;

struct Node  {
bool have_v;
int v;
Node *L,*R;
Node():have_v(have_v = false) ,L(NULL),R(NULL){}

int ans[MAX], flt,k;

bool faild ;

void addNode (int v, char *s){
for(int i=0;s[i];i++){
if(s[i]=='L'){
if(cur->L==NULL)cur->L=new Node();
cur=cur->L;
}
else if(s[i]=='R'){
if(cur->R==NULL)cur->R=new Node();
cur=cur->R;
}
}
if(cur->have_v)faild=true;
cur->v=v;
cur->have_v=true;

}

void print() {
queue<Node*>q;
while(!q.empty()){
cur=q.front();
q.pop();
if(cur->have_v==0)flt=0;
if(!flt)break;
ans[k++]=cur->v;
if(cur->L!=NULL)q.push(cur->L);
if(cur->R!=NULL)q.push(cur->R);
}
if(flt&&!faild)for(int i=0;i<k;i++){
if(i)printf(" ");
printf("%d",ans[i]);
}
else printf("not complete");
puts("");
}

void remov_Node (Node *cur){
remov_Node(cur->L);
remov_Node(cur->R);
remov_Node(cur);
}

int main (){
char s[MAX];
while(~scanf("%s",s)){
if (!strcmp(s, "()")) {
flt = 1;
k = 0;
print();
faild = false;
continue;

}
int v;
sscanf(&s[1],"%d",&v );

}
return 0;

}



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

## Oracle伪列Level的使用

Oracle伪列Level的使用 LEVEL CONNECT 根据ID的数量按序展开现有表数据如下： 生成随机数据 转置截取字符串...
• u012132482
• 2016年12月07日 09:46
• 3426

## oracle&nbsp;level关键字

• wxwpxh
• 2016年01月17日 16:56
• 3483

## syslog level

LogLevel 日志级别Description:Controls the verbosity of the ErrorLogSyntax:LogLevel levelDefault:LogLevel...
• lingruoxuehan1202
• 2010年08月23日 16:39
• 530

## IDEA报错Target Level '1.6' Is Incompatible With Source Level '1.7'

• daiyan_csdn
• 2017年11月27日 11:05
• 171

## IntelliJ IDEA 之 jdk Language level

• tiantiandjava
• 2015年06月01日 16:03
• 29764

## 深入理解connect by level<xxx

• haiross
• 2013年12月26日 17:27
• 15243

## level set介绍2（基本原理，基本思想）

2.2 水平集的定义说到水平集就应该首先明白什么是水平集。水平集的标准定义是[8]：与实数c对应的可微函数 R ." type="#_x0000_t75">的水平集是实点集 {(x1, x2, ......
• limax_2004
• 2008年12月28日 11:37
• 10938

## ORACLE层次查询学习 level connect by

﻿﻿ 层次查询的概念 语法格式： select [level], column, expr... from table 　　[where condition] 　　start with co...
• mjj291268154
• 2015年03月19日 20:44
• 2767

## ORACLE不常用但实用的技巧- 树查询 level用法

• wangxy799
• 2016年03月04日 17:20
• 5151

## oracle connect by level 的用法

connect by level  是oracle中一组关键字，是用来实现递归查询的，譬如说实现查询 1,2,3,4 .....n 的数字可以使用connect by level   SQ...
• u012251421
• 2014年12月30日 20:07
• 6832

举报原因： 您举报文章：UVA-122-TREE ON THE LEVEL 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)