UVa 122 树的层次遍历
题意:
给定一颗树, 按层次遍历输出。

分析:
用数组模拟二叉树, bfs即可实现层次遍历
#include <bits/stdc++.h>
using namespace std;
struct Node{
bool have_value;
int v, left, right;
void reset(){//用于再次初始化节点
init();
}
void init(){
have_value = ;
v = left = right = ;
}
Node():have_value(false), v(),left(), right(){init();}//构造函数
};
const int maxn = ;
Node tree[maxn];
const int root = ;
int cnt, failed;
char s[maxn];
void newtree(){
cnt = ;
tree[root].reset();
}
void addnode(int v, char* s){ int len = strlen(s) - ;
int u = root;
for(int i = ; i < len; i++){
if(s[i] == 'L'){
if(tree[u].left == )
{
tree[u].left = ++cnt;
tree[cnt].reset();
u = cnt;
}
else { u = tree[u].left;};
}
else if(s[i] == 'R'){
if(tree[u].right == ){
tree[u].right = ++cnt;
tree[cnt].reset();
u = cnt;
}
else u = tree[u].right;
}
}
if(tree[u].have_value) failed = true;
tree[u].v = v;
tree[u].have_value = true;
}
bool input(){
newtree();
failed = false;
for(;;){
if(scanf("%s",s) != ) return false;
if(!strcmp(s,"()")) break;
int v;
sscanf(&s[],"%d",&v);
addnode(v,strchr(s,',')+);//将逗号后的字符串传递
}
return true;
}
bool bfs(vector<int>& ans){//引用传递
queue<int> q;
q.push(root);
while(!q.empty()){
int u = q.front();
q.pop();
if(tree[u].have_value == )
return false;
ans.push_back(tree[u].v);
if(tree[u].left != ){
q.push(tree[u].left);
}
if(tree[u].right != ){
q.push(tree[u].right);
}
}
return true;
}
int main(){ while(input()){
vector<int> ans;
if(!bfs(ans) || failed)
printf("not complete\n");
else {
cout <<ans[];
int alen = ans.size();
for(int i = ; i < alen; i++){
cout << " " << ans[i];
}
puts("");
}
}
return ;
}
UVa 122 树的层次遍历的更多相关文章
- Uva 122 树的层次遍历 Trees on the level lrj白书 p149
是否可以把树上结点的编号,然后把二叉树存储在数组中呢?很遗憾如果结点在一条链上,那将是2^256个结点 所以需要采用动态结构 首先要读取结点,建立二叉树addnode()+read_input()承担 ...
- Trees on the level UVA - 122 (二叉树的层次遍历)
题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...
- UVa 122 (二叉树的层次遍历) Trees on the level
题意: 输入一颗二叉树,按照(左右左右, 节点的值)的格式.然后从上到下从左到右依次输出各个节点的值,如果一个节点没有赋值或者多次赋值,则输出“not complete” 一.指针方式实现二叉树 首先 ...
- 树的层次遍历(Trees on the level,UVA 122)
题目描述: 题目思路: 1.用结构链表来建树 2.用队列来实现层次遍历,当遍历到根节点时,将其子节点压入队列 #include <iostream> #include <cstdli ...
- 编程练习:实现树的层次遍历 (CVTE笔试)
直接层次遍历是比较简单的,但是题目要求的分层打印,这就变得稍微有些麻烦 我是采用两个队列的方法实现. 1.将树结构入队列1. 2.当队列1和队列2都不为空的时候,则一直循环. 3.当队列1不为空的时候 ...
- 6_7 树的层次遍历(UVa122)<二叉树的动态创建与BFS>
树状结构在计算机科学的许多领域中都相当重要.本问题牵涉到建立树及走访树.给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果.在本问题中,二叉树的每个节点含有一个正整 ...
- 6-7 树的层次遍历 uva122
非常不熟练 照着书大的 晚上尝试一下自己打 了解二叉树 用数组打 第一次: #include<bits/stdc++.h> using namespace std; bool fai ...
- UVa 122 Trees on the level(链式二叉树的建立和层次遍历)
题目链接: https://cn.vjudge.net/problem/UVA-122 /* 问题 给出每个节点的权值和路线,输出该二叉树的层次遍历序列. 解题思路 根据输入构建链式二叉树,再用广度优 ...
- UVA - 122 Trees on the level (二叉树的层次遍历)
题意:给定结点值和从根结点到该结点的路径,若根到某个叶结点路径上有的结点输入中未给出或给出超过一次,则not complete,否则层次遍历输出所有结点. 分析:先建树,建树的过程中,沿途结点都申请了 ...
随机推荐
- 扩展KMP的应用
扩展KMP的应用: 给出模板串S和串T,长度分别为Slen和Tlen,要求在线性时间内,对于每个S[i](0<=i<Slen),求出S[i..Slen-1]与T的 最长公共前缀长度,记为e ...
- Jumping Jack CodeForces - 11B
Jumping Jack CodeForces - 11B 就是一个贪心. 基本思路: 正负没有关系,先取绝对值. 首先跳过头,然后考虑怎么回来. 设超过头的步数为kk.如果kk为偶数,那么直接在前面 ...
- Python的数据类型:list和tuple
今天开始认真的学习python. 1.list类型 list是python的一种数据类型,它是一种有序列表,可以随时添加和删除其中的元素. 1.1 list类型的特征 list类型内的成员类型可以相同 ...
- 【LeetCode】297. Serialize and Deserialize Binary Tree
二叉树的序列化与反序列化. 如果使用string作为媒介来存储,传递序列化结果的话,会给反序列话带来很多不方便. 这里学会了使用 sstream 中的 输入流'istringstream' 和 输出流 ...
- C# Equals的重写
using System; using System.Collections.Generic; using System.Text; namespace Equal { using Syste ...
- CF916C Jamie and Interesting Graph
思路:构造 实现: #include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n ...
- 我用 Python 爬了智联“北上广深”5400条 Java 招聘数据
结论 国际惯例,先上结论. Java 类职位招聘,不论是需求量(工作机会),还是工资平均水平,都是帝都北京最好. 北京和上海的平均工资差距不大(不超过200/月),但上海的需求量是北京的一半,机会更少 ...
- 【转】Android Activity/Fragment Lifecycle
原文来自:http://stormzhang.github.io/android/2014/08/08/activity-fragment-lifecycle/ 说Activity和Fragment是 ...
- BotFramework学习-02
1.请求的Message格式 { "type": "Message", "id": "fd89606f8014453ca5587e ...
- 新萝卜家园Ghost版Win10系统X32极速装机版2015年4月
来自:系统妈,系统下载地址:http://www.xitongma.com/windows10/2015-03-30/6638.html 新萝卜家园Ghost Win10 X32 10041电脑城极速 ...