最新要闻
- 【e公司观察】原料涨价 锂电行业为何振奋不已?|当前看点
- 四川自贡一餐厅吃饭收15元空调费 店家:相当于雅间费-全球今头条
- 各主要高速公路、国省道干线交通总体安全顺畅 最新消息
- 有钱人为何在意电动车电费?李想用超级富豪朋友习惯解释原因-全球讯息
- 环球速看:格科微: 格科微有限公司关于公司实际控制人、董事长、首席执行官提议公司回购股份的公告
- 上海妍秀国际医疗美容诊所医生以及擅长项目推荐
- 报道:上半年最后一个假 端午节放3天:假期后需连上6天班
- 《街霸6》新角色韩蛛俐介绍片:疯美人脚法了得-全球观天下
- 最新快讯!三星宣布多款旧设备停止更新支持
- 清仓特价 森马板鞋/运动鞋39元起、T恤29元起-要闻速递
- 今日快讯:又一个小米6钉子户消失 米粉给妈妈换小米13 雷军点赞
- “广州市十佳科普使者”出炉|全球观察
- 五一余额不足 最后一天返程现场排长队 网友:凌晨出门照堵不误
- “插队婆孙”被做成恶搞表情包:如此“网暴”是否合适?
- 母子争吵儿子走丢 机场民警15分钟帮找到孩子|播资讯
- 【世界速看料】最便宜的16GB显存显卡出现了!AMD、NVIDIA统统靠边站
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【世界新视野】1159 Structure of a Binary Tree + 根据前序和中序构建二叉树+ 层序遍历模板复习
【资料图】
题目链接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635126488367104
唉,今天的bug出在了下面这条语句。
if (tree[root_key].left * tree[root_key].right < 0) full_tree = false;
我写成了
full_tree = !(tree[root_key].left * tree[root_key].right < 0); // 这就会导致full_tree即便变成了false也有可能变回true。导致错判。
根据前序和中序构建二叉树
参考的柳神代码,灵活的点就在于,用下标表示数组区间,嗯,相比直接传数组的引用,轻了不少。
int build(int R, int start, int end, int fa) { // 1. post数组的最右边的位置;2. start, end : in数组的起始位置;3. 对于这题来说还需要记录父节点fa。 if (start > end) return -1; int root_key = post[R], pos = start; while (in[pos] != root_key && pos < end) pos++; tree[root_key].level = tree[fa].level + 1; tree[root_key].fa = fa; tree[root_key].left = build(R - 1 - (end - pos), start, pos - 1, root_key); // 记住post的最后一个元素的下标一定要用 R 来相对计算,而不是只用 pos,不然在递归的过程中,即便前几层看不出什么,往后一定会发生错位。 tree[root_key].right = build(R - 1, pos + 1, end, root_key); // 下标的选择是经常容易出bug的,一定要想清楚 if (tree[root_key].left * tree[root_key].right < 0) full_tree = false; return root_key;}
题解代码:
#include#include#include#includeusing namespace std;int n, m;struct Node { Node() { fa = left = right = -1; } int level, fa, left, right;} tree[1005];bool full_tree = true;int in[35], post[35], num1, num2;int build(int R, int start, int end, int fa) { // 1. post数组的最右边的位置;2. start, end : in数组的起始位置;3. 对于这题来说还需要记录父节点fa。 if (start > end) return -1; int root_key = post[R], pos = start; while (in[pos] != root_key && pos < end) pos++; tree[root_key].level = tree[fa].level + 1; tree[root_key].fa = fa; tree[root_key].left = build(R - 1 - (end - pos), start, pos - 1, root_key); // 记住post的最后一个元素的下标一定要用 R 来相对计算,而不是只用 pos,不然在递归的过程中,即便前几层看不出什么,往后一定会发生错位。 tree[root_key].right = build(R - 1, pos + 1, end, root_key); // 下标的选择是经常容易出bug的,一定要想清楚 if (tree[root_key].left * tree[root_key].right < 0) full_tree = false; return root_key;}bool siblings(int a, int b) { return tree[a].fa == tree[b].fa;}bool same_level(int a, int b) { return tree[a].level == tree[b].level;}bool parent(int a, int b) { return tree[b].fa == a;}bool left_child(int a, int b) { return tree[b].left == a;}bool right_child(int a, int b) { return tree[b].right == a;}int main() { cin >> n; for (int i = 0; i < n; i++) cin >> post[i]; for (int i = 0; i < n; i++) cin >> in[i]; int root = post[n - 1]; build(n - 1, 0, n - 1, 0); cin >> m; while (m--) { string str; cin >> str; if (str[0] == "I") { getline(cin, str); cout << (full_tree ? "Yes" : "No") << endl; } else { num1 = stoi(str); cin >> str; if (str[0] == "a") { cin >> num2 >> str >> str; if (str[0] == "s") { cout << (siblings(num1, num2) ? "Yes" : "No") << endl; } else { getline(cin, str); cout << (same_level(num1, num2) ? "Yes" : "No") << endl; } } else { cin >> str >> str; switch(str[1]) { case "o" : { cout << (root == num1 ? "Yes" : "No") << endl; } break; case "a" : { cin >> str >> num2; cout << (parent(num1, num2) ? "Yes" : "No") << endl; } break; case "e" : { cin >> str >> str >> num2; cout << (left_child(num1, num2) ? "Yes" : "No") << endl; } break; case "i" : { cin >> str >> str >> num2; cout << (right_child(num1, num2) ? "Yes" : "No") << endl; } break; } } } } return 0;}
刚做的时候以为要用层序遍历,顺便复习一下吧。
层序遍历模板代码:
vector> level_order(Node *root) { vector> res; queue q; if (root) q.push(root); while (q.size()) { int size = q.size(); vector v; for (int i = 0; i < size; i++) { Node *node = q.front(); q.pop(); // 上一排的元素依次出队 v.push_back(node->val); // 下一排的节点全部入队 if (node->left) q.push(node->left); if (node->right) q.push(node->right); } // 存入一排 res.push_back(v); } return res;}
关键词:
-
每日信息:关于如何使用pandas将不同的数据写入到同一个Excel的不同Sheet表中
笔者在之前使用python将数据写入到Excel表格中,一般都只需要写入一张Sheet表中就可以了因最近一个小的需求
来源: -
【世界新视野】1159 Structure of a Binary Tree + 根据前序和中序构建二叉树+ 层序遍历模板复习
题目链接:https: pintia cn problem-sets 994805342720868352 exam problems 1478635126488367104唉,今
来源: 【实变函数】01 - 更合理的积分
每日信息:关于如何使用pandas将不同的数据写入到同一个Excel的不同Sheet表中
【世界新视野】1159 Structure of a Binary Tree + 根据前序和中序构建二叉树+ 层序遍历模板复习
【e公司观察】原料涨价 锂电行业为何振奋不已?|当前看点
四川自贡一餐厅吃饭收15元空调费 店家:相当于雅间费-全球今头条
各主要高速公路、国省道干线交通总体安全顺畅 最新消息
热讯:写几行代码,了解响应式原理
第139篇:JS数组常用方法(map(),reduce(),foreach())
83.赋值运算符
IMF:中国将成为今年亚太地区经济增长关键驱动因素
有钱人为何在意电动车电费?李想用超级富豪朋友习惯解释原因-全球讯息
环球速看:格科微: 格科微有限公司关于公司实际控制人、董事长、首席执行官提议公司回购股份的公告
【2023 · CANN训练营第一季】昇腾AI入门Pytorch
世界微动态丨23 网络数据在内核中流转
ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 导致的数据不一致问题
5月3日全国铁路迎来返程客流高峰 预计发送旅客1935万人次 世界独家
上海妍秀国际医疗美容诊所医生以及擅长项目推荐
报道:上半年最后一个假 端午节放3天:假期后需连上6天班
《街霸6》新角色韩蛛俐介绍片:疯美人脚法了得-全球观天下
Bash—source命令&export命令&bashrc文件
最新快讯!三星宣布多款旧设备停止更新支持
清仓特价 森马板鞋/运动鞋39元起、T恤29元起-要闻速递
今日快讯:又一个小米6钉子户消失 米粉给妈妈换小米13 雷军点赞
22 URL到网卡:网络数据流动
“广州市十佳科普使者”出炉|全球观察
五一余额不足 最后一天返程现场排长队 网友:凌晨出门照堵不误
“插队婆孙”被做成恶搞表情包:如此“网暴”是否合适?
【全球聚看点】OpenAI API keys 的申请和测试小结
母子争吵儿子走丢 机场民警15分钟帮找到孩子|播资讯
【世界速看料】最便宜的16GB显存显卡出现了!AMD、NVIDIA统统靠边站
焦点报道:苹果、谷歌起草追踪设备行业规范:打击滥用定位功能
当前短讯!实惨!男子拍演唱会:激光导致手机摄像头直接报废
Realme 11 Pro+ 5G 曝光 在5月10日发布
66元的的钟薛高在东北只要3.8元一根!商家回应
开眼!丰田为混动车申请“手动挡”专利:只为保留驾驶乐趣 环球热推荐
游客停车31小时被收640元:明码标价 但已退还
Blazor学习之旅系列总结目录
国铁集团郑州局预计3日客流创历史新高
小学生写人作文开头结尾集锦_小学生写人作文-观速讯
【天天时快讯】阿维塔定金72小时内可退成空话 店长:“已锁单”
汽车盗窃案上升548% 纽约市免费发放500个苹果AirTag应对
【当前独家】 男子吐槽在景区停车场一路捡到26个螺丝钉 官方回应
青海省西宁市城西区西川南路消防救援站站长助理玛尼坚——磨砺技能 守护平安(劳动者之歌)
多地消费市场见闻
世界资讯:客户抛弃雷克萨斯LM来买 腾势D9 4月销量10526辆
19.99万元期待落空 打价格战的特斯拉为何突然涨价:利润下滑
观速讯丨Intel AVX-512指令集要回来!残血版?AMD正尽情享受
世界最资讯丨艾玛·沃森曝光新写真 透露2024年开拍新电影
24小时不打烊,365天对外接待……“临汾好办”不要太方便! 环球播资讯
每日热文:前缀和
可怜的欧美!RTX 3070上市两年半 终于破发|今头条
环球头条:雷蛇噬魂鲨极速版耳机发布:50mm驱动单元、30小时续航
别只会“王者峡谷五日游” 这几款游戏才是假期最佳解
每日关注!4月新能源销量:比亚迪、埃安、理想全线杀疯
全球要闻:巨亏236亿元!三星内存、闪存要减产25%
天天热头条丨“天空之城”游人如织
学系统集成项目管理工程师(中项)系列16b_风险管理(下)
世界观点:4年来首次下滑 AMD发布Q1季度财报:锐龙处理器成重灾区
五菱缤果营销比亚迪海豚话术曝光:颜值高、空间大
【速看料】五一后机票价格暴跌 飞三亚从2800降到280元 专家表态:很正常
联合国秘书长:呼吁以色列停止行政拘留的做法|全球观焦点
python图像处理库
Java读取数据库表
世界今热点:徊的拼音_徊怎么组词
流媒体时代谋生艰难!好莱坞编剧15年来将首次罢工
为何插电混动车主爱在外充电 理想高管分析:薅羊毛感觉爽
当前资讯!司机等红绿灯时看手机被罚200扣3分 车是静止状态:网友吵翻 但事实没错
NV一代神卡卷土重来!Steam新报告:RTX 40降价仍没存在感_当前热议
五一想在户外看电影、选购投影仪一定要注意这几点
浙商证券研究所所长助理陈杭离职:否认网传800万年薪,专心处理舆论_世界热资讯
81.数组 全球热门
Win11“颠覆性”功能被遗弃:失效三个月仍被微软无视
嘴硬还是明智?丰田高管:电动汽车技术不成熟、混动才实用
同花顺ai机构活跃度指标公式源码_活跃度100
Android-图片压缩(二)-纯干货
C# 常量 结构体 委托 热门看点
喝的二五八万是什么意思_二五八万是什么意思
性能达SteamDeck两倍!华硕ROG Ally掌机先行开箱来了
奇葩!插队发飙者称是换队 网友吐槽发飙发泼有理:景区称仍算插队
天天热议:手机就能跑!开源AI机器人MLC LLM发布:无需联网
喜欢玩手机 那就活该单身
沃尔沃首款全电动汽车现已准备好接触其首批英国客户
降价伤人伤己?特斯拉国内外突然涨价背后:实为去库存|每日短讯
ChatGPT导致信息泄露后:三星将开发内部AI工具
女子淄博吃烧烤排不上队被投喂饱 山东太热情:人民日报点赞
11.迷宫问题(BFS 储存路径)
哈弗的新款Boxy SUV由前路虎设计师设计|世界球精选
韩国大学生吃掉天价香蕉艺术品 称是行为艺术!原作者回应了 每日速读
焦点快报!最高热效率达44%:五菱柳机自研高热效发动机点火成功
私拆承重墙高楼已加固 居民称胆真大:多层裂纹被掩盖 还敢住吗
坏账损失核算方法有_坏账损失核算方法 世界即时看
卖不动很无奈?NVIDIA对RTX 4090官降:今年第三次了
华为重申保持创新:1年1615亿研发费下14nm以上EDA国产化 5G必要专利全球第一_全球观热点
appuploader iOS 应用自动发布
苹果酸酶_关于苹果酸酶的简介
Windows 12这般模样?概念设计出炉:任务栏/开始菜单无比舒服 天天头条
21 文件六大基本操作|焦点速读
Tomcat7安装基于jdk 1.7环境
全球资讯:STM32_5(中断)
ASML吓坏?俄罗斯放狠话加快自研光刻机 能产7nm芯片:合作伙伴敲定