UVa 122 Trees on the level 建立二叉树BFS层序遍历

UVA122 树的层次遍历 Trees on the level(两种方法详解) UVA122 树的层次遍历 Trees on the level 输入: (11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) () (3,L) (4,R) () 输出: 5 4 8 11 13 4 7 2 1 not complete //不管是左子树还是右子树,它们的父节点都是P/2; 以下内容来自《算法竞赛入门经... 阅读详情





#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>

using namespace std;

const int maxn = 256 + 10;
char s[maxn];

struct node {
	int d;
	bool has_v;
	node *left, *right;
	node() : d(0), left(NULL), right(NULL), has_v(false) {}
};

node *root;
vector<int> ans;

bool bfs() {
	queue<node*> Q;
	Q.push(root);
	while (!Q.empty()) {
		node* tn = Q.front(); Q.pop();
		if (!tn->has_v) return false; //发现树上有断点
		ans.push_back(tn->d);
		if (tn->left != NULL) Q.push(tn->left);
		if (tn->right != NULL) Q.push(tn->right);
	}
	return true;
}

bool addnode(int v, char *s) {
	node *u = root;
	while (*s != ')') {
		if (*s == 'L') {
			if (u->left == NULL) u->left = new node();
			u = u->left;
		}
		else if (*s == 'R') {
			if (u->right == NULL) u->right = new node();
			u = u->right;
		}
		s++;
	}
	if (u->has_v) return false;
	u->has_v = true;
	u->d = v;
	return true;
}

void Del_tree(node *root) {
	if (root == NULL) return;
	Del_tree(root->left);
	Del_tree(root->right);
	delete root;
}

int main()
{
	int v;
	bool flag = true;
	root = new node();
	ans.clear();
	while (~scanf("%s", s)) {
		if (strcmp(s, "()")) {
			sscanf(&s[1], "%d", &v); //解析输入数字到v
			if (flag) //如果上次addnode有问题那么以后就没必要做了
				flag = addnode(v, strchr(s, ',') + 1);
		}
		else {
			if (!flag || !bfs()) {
				printf("not complete\n");
			}
			else { //此时flag == true && bfs() == true
				int cnt = 0;
				for (vector<int>::iterator i = ans.begin(); i != ans.end(); i++) {
					if (!cnt)
						printf("%d", *i);
					else
						printf(" %d", *i);
					cnt++;
				}
				puts("");
			}
			Del_tree(root); //将树删除

			//为下次的新树初始化
			flag = true;
			ans.clear();
			root = new node();
		}
	}
	delete root;
	return 0;
}





基于AIS动态数据与AI结合得经纬度标示算法 港口船舶智能标注系统 本系统通过结合摄像头视频流和AIS船舶动态数据,利用AI技术实现船舶实时标注功能。系统架构包括视频流处理、AIS数据解析、船舶检测匹配和坐标映射转换等模块。关键技术步骤: AIS数据获取:通过本地接收机或网络API获取船舶位置、航速等信息 AI目标检测:采用YOLOv8等模型识别视频中的船舶 船舶匹配算法:通过位置投影或运动轨迹匹配视频目标与AIS数据 坐标映射:使用相机标定技术将经纬度转换为图像坐标 实时标注:在视频画面上叠加船名、位置等关键信息 应用场景包括港口监控、智能海事管理和 阅读详情

相关推荐

EPLAN中3D宏文件的创建与优化技巧(以开关电源为例)

本文以开关电源为例,详细讲解了在EPLAN中创建和优化3D宏文件(.ema)的全流程。从搭建宏项目、导入模型,到精确定义安装面、调整视野方向,再到定义3D连接点并关联部件库,旨在帮助电气工程师在设计阶段实现精准布局、避免安装冲突,从而提升设计效率与质量。

weixin_29219539的博客 547

Trees on the level UVa122

一开始写的指针实现的版本,貌似存在内存泄漏问题,输入之间有蜜汁相互作用,后改为数组实现,AC。指针版本:#include &lt;cstdio&gt; #include &lt;queue&gt; #include &lt;vector&gt; using namespace std; char x[300], cmd[300]; int flag; struct node{ int ...

比宇宙更远的地方- 277

Warning-[INFL_DELTA] Too many events zero delay loop

项目场景: 运用VCS工具执行仿真的时候,遇到如下错误提示,但仿真还在继续。 Warning-[INFL_DELTA] Too many events Possible zero delay loop. Too many events in the simulation at time 0 fs. 问题描述: 为什么会有这个问题; 什么导致了这个问题; 原因分析: 1、为什么会有这个问题 由于竞争条件或编码风格不明确,可能会产生零延时回路,导致仿真挂起或仿真时间无限。 2、什么导致了这个问题 举

hh199203的博客 1万+

UVa122:Trees on the level

题目描述建立节点,并使用BFS输出。代码实现#define _CRT_SECURE_NO_WARNINGS#include <iostream> #include <queue>#define maxn 256using namespace std;// (11,LL) (7,LLL) (8,R) (5, ) (4, L) (13, RL) (2, LLR) (1, RRR) (4, RR) ()

I AM BACK 805

手把手教你搭建日本亚马逊CVV钓鱼系统(含自动验证功能)

本文详细介绍了电商平台安全防护的关键实践,重点讲解了如何构建自动化风控系统。内容包括基础架构设计、用户行为分析、交易风险评估模型构建、验证机制实现以及系统部署优化,帮助电商平台有效识别和防范安全威胁,同时提升用户体验。

weixin_30952535的博客 814

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2201

uva 122 Trees on the level

题目要求按层次输出数的各个节点,其实只要对输入的数据做个排序就可以了。 #include using namespace std; #include #include #include struct Node { string v; string path; }; Node nodes[300]; set v_set; set p_set; int get_(string s) {

Detective_Xin的专栏 1715

YOLOv13改进策略【Neck篇】| GSConv 轻量卷积,Slim-Neck 减参数还不掉点

Neck 篇的第二篇继续"替换式"改进,这次的对象是 Neck 里的下采样卷积。GSConv 出自《Slim-neck by GSConv: a better design of lightweight detector》(2022),它的出发点:DWSConv(深度可分离)轻但"信息混不进通道",标准卷积重但表达好——GSConv 用GConv(分组卷积)混通道 + DWConv 补空间 + Channel Shuffle 打散,两全其美。

qq_53329130的博客 29

UVa 122 Trees on the Level

本文介绍了如何根据给定的节点描述序列构建二叉树并输出其层序遍历结果。每个节点由一个正整数和路径字符串表示,路径字符串指示节点在树中的位置。若树完全指定(每个节点仅赋值一次),则输出层序遍历结果;否则输出"not complete"。解题步骤包括动态建树、检查节点赋值完整性、层序遍历输出和内存管理。算法时间复杂度为O(N),空间复杂度为O(N)。代码实现采用递归遍历和动态内存管理,适用于二叉树基本操作练习。

寂静山林 351

【Cesium开发实战】解决加载白膜数据位置不合适问题(地底或浮空)

解决白膜位置地底或者浮空问题。

莫言情怼的博客 568

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2725

UVA.122 Trees on the level(二叉树 BFS)

UVA.122 Trees on the level(二叉树 BFS)题意分析给出节点的关系,按照层序遍历一次输出节点的值,若树不完整,则输出not complete代码总览#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <vector> #

Pengwill's Blog 361

【考试大纲】中级多媒体应用设计师考试大纲

中级多媒体应用设计师考试大纲

邓邓子的博客 382

Trees on the level UVA - 122(层序遍历bfs)

#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;vector&gt; #include &lt;queue&gt; #include &lt;cstring&gt; using namespace std; struct Node{ int v; Node* left ,*right; in...

leekerian的博客 171

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Trees on the level UVA - 122 找规律模拟题,不需要结构体建树

题目链接 分析:刘老师的方法是动态建树,模拟bfs来层序遍历。”投机取巧“这道题也可以ac,找规律即可。 思路:定义一个map&amp;amp;amp;lt;string, int, MyCompare&amp;amp;amp;gt; binary; string为括号中的LL,RR等等 int为结点的值 自定义排序:我们可以发现规律,本题的输入已经将给我们输入了一个二叉树,不需要再建树了。从上到下,左到右LL,LLR除了长度以及符合字典序了...

qq_43185391的博客 276

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

UVA122 树的层次遍历 Trees on the level

这道题求树的层序遍历序列,然后给了结点信息,我采用的思路试建树然后再层序遍历,建树其实就是写一个插入函数,一般的插入函数是传root和要插的数据,这里我们肯定是要传字符串或者把字符串处理得到的信息,首先把字符串的括号去掉,然后插入函数分情况讨论, 首先分两种大情况,字符串的最后一个是不是逗号,如果是,说明这个时候要插入数据了,如果root是null,那么这就是普通情况,插入,如果root不是null,并且值是-1,说明当时要插一个更深的点而经过这个点,所以创建了这个点,-1当然是人为设置用来区分,因为所有结

qq_33942309的博客 348

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

UVa 122 Trees on the level (动态建树 && 层序遍历二叉树)

题意 :输入一棵二叉树,你的任务是按从上到下、从左到右的顺序输出各个结点的值。每个结 点都按照从根结点到它的移动序列给出(L表示左,R表示右)。在输入中,每个结点的左 括号和右括号之间没有空格,相邻结点之间用一个空格隔开。每棵树的输入用一对空括 号“()”结束(这对括号本身不代表一个结点),注意,如果从根到某个叶结点的路径上有的结点没有在输入中给出,或者给出超过一 次,应当输出not ...

176

UVA 122 Trees on the level 二叉树的层序遍历

  题目链接: UVA 122   题目描述: 输入数值和路径, 输出一棵树的层序遍历, 如果树不合法就输出-1   解题思路: 纯码力, 学会了利用sscanf来赋值, 还有就是记住可以把任意“指向字符的指针”看成是字符串, 收获很大   代码: #include <iostream> #include <queue> #include <st...

weixin_33691700的博客 167

UVa 122 - Trees on the level

解题思路: 方法一: 题目意思很明白,就是一颗二叉树的层序遍历,那么我看到这道题立即产生的一种想法就是,根据题目输入对每个节点做一个映射,这颗二叉树的每个节点我们都用一个字符串来做它的唯一标识,那么比如某个父节点的字符串是str,那么它的两个孩子节点所对应的字符串就分别是str+”L”(左孩子)和str+”R”(右孩子),根据题目的输入我们可以让每个字符串映射一个整型的值,代表这个字符串所标识的

chuyangzhanfang的博客 433

UVA 122 && HDU 1622 Trees on the level(构造二叉树+BFS层序遍历)

Trees on the level Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 783    Accepted Submission(s): 268 Problem Description Trees are

aozil_yang的博客 865

UVA - 122 Trees on the level(二叉树的构建+宽度优先遍历)

点击打开题目链接 层序遍历输出二叉树节点值。 存储结构可以是结构体+指针,也可以数组+下标 lrj代码对字符串的处理比较灵活。 代码: #include using namespace std; const int maxn = 256 + 5; const int root = 1; vectorint>ve; int l[maxn], r[maxn]; int cnt; int

Chook_lxk的博客 352

例题6-7 UVA 122 - Trees on the level 树的层次遍历

因为过年,这个题看了比较长的时间,但是看懂了后,感觉题目解析非常巧妙 这篇博客就记录下自己学到的东西吧! 1。在输入方面,直接开了一个bool read_input()函数,这样在输入EOF时,就返回false,所以可以在main函数里直接这样写:while(read_input()){...}。 2。在这个read_input 函数里面,用到了sscanf (&s[1]),这样就把字符串从

aozil_yang的博客 833

UVa 12657 Boxes in a Line 数组模拟双向循环链表

#include #include #include using namespace std; const int maxn = 100000 + 10; int L[maxn], R[maxn]; void link(int X, int Y) { R[X] = Y; L[Y] = X; } void Swap(int& x, int& y) { int t = x; x =

EventQueue的博客 912
上一篇: UVa 12657 Boxes in a Line 数组模拟双向循环链表
下一篇: UVa 548 Tree 根据后序遍历和中序遍历建树后DFS
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值