博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 122 Trees on the level 二叉树 广搜
阅读量:5968 次
发布时间:2019-06-19

本文共 2164 字,大约阅读时间需要 7 分钟。

  题目链接: https://vjudge.net/problem/UVA-122

  题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not complete"

  解题思路: 这道题就是硬搞就可以了, 参考紫书去做的, 首先处理输入就是非常麻烦的事情, 用到了sscanf就会轻松很多, 看来C中还是有很多很多的好用的标准库函数可以拿来用的, 例如还有本题中的strchr() , 处理完输入, 然后就去构造数。 然后广搜一遍即可

  代码: 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#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
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
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

你可能感兴趣的文章
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>
linux之权限之隐藏权限
查看>>
XDCTF成长记录
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
unix 环境高级编程
查看>>
为数据库建立索引
查看>>
第二周作业-软件工作量的估计
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>