6-7 树的层次遍历 uva122
非常不熟练 照着书大的
晚上尝试一下自己打 了解二叉树 用数组打
第一次:
#include<bits/stdc++.h>
using namespace std;
bool failed; void addnode(int v,char *s);
char s[];
struct node
{
bool flag;
int v;
node *left,*right;
node():flag(false),left(NULL),right(NULL){} };
node *root;
node *newnode(){return new node();}
bool read_input()
{
failed=false;
root=newnode();
for(;;)
{
if(scanf("%s",s)!=)return false;
if(!strcmp(s,"()")) break;
int v;
sscanf(&s[],"%d",&v);
addnode(v,strchr(s,',')+); }
return true; } void addnode(int v,char *s)
{
int n=strlen(s);
node *u=root;
for(int i=;i<n;i++)
{
if(s[i]=='L')
{
if(u->left==NULL)u->left=newnode();
u=u->left; }
else if(s[i]=='R')
{
if(u->right==NULL)u->right=newnode();
u=u->right; } }
if(u->flag)failed=true;
u->v=v;
u->flag=true; } bool bfs (vector<int>&ans)
{
queue<node*>q; ans.clear();
q.push(root);
while(!q.empty())
{
node *u=q.front();q.pop();
if(!u->flag)return false;
ans.push_back(u->v);
if(u->left!=NULL)q.push(u->left);
if(u->right!=NULL)q.push(u->right); }
return true; } int main()
{ vector<int>ans;
while(read_input())
{
if(!bfs(ans))failed=true;
if(failed)printf("not complete\n");
else
{
for(int i=;i<ans.size();i++)
{
if(i==ans.size()-)printf("%d\n",ans[i]);
else printf("%d ",ans[i]); } } } return ;
}
6-7 树的层次遍历 uva122的更多相关文章
- 树的层次遍历(Trees on the level,UVA 122)
题目描述: 题目思路: 1.用结构链表来建树 2.用队列来实现层次遍历,当遍历到根节点时,将其子节点压入队列 #include <iostream> #include <cstdli ...
- UVa 122 树的层次遍历
题意: 给定一颗树, 按层次遍历输出. 分析: 用数组模拟二叉树, bfs即可实现层次遍历 #include <bits/stdc++.h> using namespace std; st ...
- 编程练习:实现树的层次遍历 (CVTE笔试)
直接层次遍历是比较简单的,但是题目要求的分层打印,这就变得稍微有些麻烦 我是采用两个队列的方法实现. 1.将树结构入队列1. 2.当队列1和队列2都不为空的时候,则一直循环. 3.当队列1不为空的时候 ...
- 6_7 树的层次遍历(UVa122)<二叉树的动态创建与BFS>
树状结构在计算机科学的许多领域中都相当重要.本问题牵涉到建立树及走访树.给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果.在本问题中,二叉树的每个节点含有一个正整 ...
- Uva 122 树的层次遍历 Trees on the level lrj白书 p149
是否可以把树上结点的编号,然后把二叉树存储在数组中呢?很遗憾如果结点在一条链上,那将是2^256个结点 所以需要采用动态结构 首先要读取结点,建立二叉树addnode()+read_input()承担 ...
- 数据结构5_java---二叉树,树的建立,树的先序、中序、后序遍历(递归和非递归算法),层次遍历(广度优先遍历),深度优先遍历,树的深度(递归算法)
1.二叉树的建立 首先,定义数组存储树的data,然后使用list集合将所有的二叉树结点都包含进去,最后给每个父亲结点赋予左右孩子. 需要注意的是:最后一个父亲结点需要单独处理 public stat ...
- Trees on the level UVA - 122 (二叉树的层次遍历)
题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...
- PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
03-树1. List Leaves (25) Given a tree, you are supposed to list all the leaves in the order of top do ...
- <二叉树的基本操作(有层次遍历)>
#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK ...
随机推荐
- XML之Well-Formed文档规则
由于课程原因,近日粗略学习XML,载以博客是为担心忘记,以供日后复习之用. XML标准中明确规定了XML文件应当遵守的规则,大致上分成基本规则和DTD(Document Type Definition ...
- NOIP2018TG题解
应该不会被禁赛吧qwq Day1 T1 铺设道路 €€£:我 抄 我 自 己 我考场上写的是一个类似于差分的做法,就是开个数组表示某个位置是否贡献答案,从小到大枚举高度,那么一个位置能贡献答案当且仅当 ...
- Web前端的缓存机制(那些以代价换来的效率)
对于Web前端而言,cache可以说是无处不在,通常是2个环节之间,就会引入一个cache做为提升整体效率的角色.例如A和B两者之间的数据交换,为了提升整体的效率,引入角色C,而C被用于当做热点数据的 ...
- js中获取时间new date()的用法和获取时间戳
获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getF ...
- Ajax跨域访问解决方案
No 'Access-Control-Allow-Origin' header is present on the requested resource. 当使用ajax访问远程服务器时,请求失败,浏 ...
- 2017/05/04 java 基础 随笔
1.java变量在使用之前必须初始化 int a; a=10 ; int b; 没有初始化,也没有使用也不报错 2.强制类型转换 int a=8: byte b=6; b=(byte)(a+b); ...
- oaracel 函数_行转列
wm_concat(varchar2) 组函数
- headers 替换脚本
python代码 headers = """ Accept: */* Accept-Encoding: gzip, deflate, br Accept-Language ...
- spring mvc context-param init-param 区别
init-param:mvc 配置文件context-param spring配置文件
- Python-ccs动画及阴影
动画及阴影 0. 什么时候该用什么布局 <!-- 定位布局: 以下两种布局不易解决的问题, 盒子需要脱离文档流处理 --> <!-- 浮动布局: 一般有block特性的盒子,水平排列 ...