UVA 122 Trees on the level 二叉树 广搜
题目链接: https://vjudge.net/problem/UVA-122
题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not complete"
解题思路: 这道题就是硬搞就可以了, 参考紫书去做的, 首先处理输入就是非常麻烦的事情, 用到了sscanf就会轻松很多, 看来C中还是有很多很多的好用的标准库函数可以拿来用的, 例如还有本题中的strchr() , 处理完输入, 然后就去构造数。 然后广搜一遍即可
代码:
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <cstring> #include <iterator> #include <cmath> #include <algorithm> #include <stack> #include <deque> #include <map> #include <set> #include <queue> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define mem0(a) memset(a,0,sizeof(a)) #define sca(x) scanf("%d",&x) #define de printf("=======\n") typedef long long ll; using namespace std;struct node {bool yo;int value;node * l;node * r;node() {yo = false;value = 0;l = r = NULL;}}; node * root; bool failed; vector<int> ans; int cnt;node * new_node() {return new node(); }void addnode( int v, char * p ) {int n = (int)strlen(p);node * u = root;for( int i = 0; i < n; i++ ) {if( p[i] == 'L' ) {if( u->l == NULL ) u->l = new_node();u = u->l;}else if( p[i] == 'R' ) {if( u->r == NULL ) u->r = new_node();u = u->r;}}if( u->yo == true ) {failed = true;return;}u->value = v;u->yo = true; }bool readin() {char s[290];while( 1 ) {if( scanf( "%s", s ) != 1 ) return false;if( strcmp(s, "()") == 0 ) break;int v;sscanf( &s[1], "%d", &v );addnode( v, strchr(s, ',')+1 );}return true; }bool bfs() {queue<node *> q;q.push(root);while( !q.empty() ) {node * temp = q.front();q.pop();if( temp->yo == false ) return 0;ans.push_back(temp->value);if( temp->l ) q.push(temp->l);if( temp->r ) q.push(temp->r);}return 1; } int main() {while(1) {cnt = 0;failed = 0;root = new_node();ans.clear();if( !readin() ) break;if( !failed && bfs() ) {int len = (int)ans.size();for (int i = 0; i < len; i++)printf("%d%c", ans[i], i == len - 1 ? '\n' : ' ');}else {puts( "not complete" );}}return 0; }
View Code
思考: 了解到一些很好用函数, 然后知道了每次对指针进行操作的时候都要判空, 我觉得数据结构和数学两大块儿真的是具重要, 原本打算打完今年的区域赛就退役了,但是为了学习各种的数据结构和数学, 我还是得继续打下去啊.....刷题还是不能断啊老哥, 然后我是真的想进橘子娱乐啊........我他妈是真的想进啊, 和我实在是太适合了, 然后现在就是非常非常非常难熬了.......
转载于:https://www.cnblogs.com/FriskyPuppy/p/7496562.html
UVA 122 Trees on the level 二叉树 广搜相关推荐
- 【日常学习】【指针二叉树+BFS】Uva - 122 Trees on the level题解
作为一个传统型的树盲,不得不把树重新学习一次.通常我是不太喜欢指针的,但这样写下来感觉还能接受. 题目来源是ACM DUKE 1993 Uva 122 杭电也有这道题 这道题目基本是照着ruka抄来 ...
- [UVa 122] Trees On the Level
Trees On the Level 竟然还有 (,) () 这种东西!!! #include <cstdio> #include <cstring> #include < ...
- UVa 122 Trees on the level
题意:给出一棵二叉树,按照从上到下,从左到右输出所有节点的值,如果有一个节点没有赋值或者被多次赋值则输出not complete 看的紫书照着敲的= = 先要将输入进来的值建成一颗二叉树(定义一个二叉 ...
- 122 - Trees on the level(模拟内存池解法)
PS:题目和动态分配内存解法,可以查看:122 - Trees on the level(动态分配空间解法) PS:模拟内存池的原理简单的说就是先初始化一个空闲队列,当需要资源时,直接从队首获取,当资 ...
- 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) ...
- 二叉树的深搜(DFS)与广搜(BFS)
转载自: https://blog.csdn.net/u011613367/article/details/50950408 数据结构中的有两个比较重要的算法.深度优先搜索和广度优先搜索. 二叉树中的 ...
- 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...
- 深搜(DFS) 广搜(BFS)
搜索的核心概念 问题求解树 是一种思维逻辑层面的结构,而非程序中的实际存储结构:思维结构可以表示无限的概念 设计搜索算法的核心关键点 设计问题求解树的状态 搜索剪枝和优化 在问题求解树搜索过程中,对于 ...
- 八数码 poj 1077 广搜 A* IDA*
经典的八数码问题,有人说不做此题人生不完整,哈哈. 状态总数是9! = 362880 种,不算太多,可以满足广搜和A*对于空间的需求. 状态可以每次都动态生成,也可以生成一次存储起来,我用的动态生成, ...
最新文章
- 文件读写以及数据处理
- centos java 指令_Centos 命令方式下载JDK1.7
- python生成回文数
- 机器学习中的不平衡分类方法(part2)--模型评估与选择
- cmd编译java文件中文乱码_乱码 HelloWorld 世界你好 cmd 执行输出的中文java 显示乱码 解决 另附 win无法执行编译运行javac java编译文件的解决方案...
- 关闭Wordpress修订功能,清除“Revision”的方法
- springboot实现快速整合mybatis+mysql
- 输入这个命令之后,FinalShell连接不上地推主机了
- 创建目录 java_java创建文件和目录
- HTML DOM对象的属性和方法介绍(原生JS方法)
- Installshield2008教程
- 计算机四级c语言题库及答案,计算机四级考试题库及答案
- (转)不看绝对后悔的Linux三剑客之awk实战精讲
- 《软件测试》第十二章 文档测试
- 在Delphi程序中调用控制面板设置功能
- 常用的Eclipse 快捷键
- win10软件字符乱码解决
- 企业平台云化如何迁移?迁移的基本思路是什么?
- Vlan和pvlan全面解析
- python3下载mapbox矢量切片
热门文章
- centos 6.x 升级内核
- HDU 3058 Generator [AC自动机+期望DP]
- Linux下的截图工具 KSnapshot
- oracle12c审计功能,oracle 12c开启关闭统一审计
- ios 苹果审核常见被拒问题
- XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
- Xamarin Android项目真机测试闪退
- C#开发Unity游戏教程之Scene视图与脚本的使用
- python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...
- 重磅!UCSF的研究者利用脑机接口首次让患者输出完整句子,展现恢复语言沟通的潜力...