竞赛
考级
震惊!我上榜了(可跳过这一部分到下一个标题) 有生之年居然还可以上榜!!!(两天就上榜,啥实力)(震惊我一万年) 第九啦!(三天就第九,啥实力我不多说)(震惊我两万年) 第八啦!(bushi震惊我十万年)15分钟前还是第10,14分钟前到第9了,没想到这么快就第8了哈哈哈 评论破百!(震惊我十一万年) (点赞率好浪漫) 榜七啦!(震惊我二十万年) bushi今天早上还榜10的下午直接榜6了(震惊我三十六万年) 哇哇哇哇哇榜五啦!!!(震惊我五十五万年) 哇塞!!!榜三啦!!!(震惊我一百零三万年)冲击榜一!!! 内容保密(出发点开的 点进来的跳过这一部分) 文章介绍 因为快期中考试了,我之前看见很多人写 CSP−S\mathtt{CSP-S}CSP−S 等比赛的游记,我考了CSP-J但忘记写游记了,但作为一个学生,我要写一个期中考试的小游记。 文章背景 俺是一个初一的学生,期中考试为期两天,如下 第一天 第二天 语文 数学 政治 地理 英语 生物 历史 以及俺前面的成绩(格式:得分/总分/级部1000人的排名) 10月月考 11月期中 12月月考 1月期末 数学 105/120 220 111/120 180 85/100 230 109/120 190 英语 95/100 27 119/120 3 91/100 30 111/120 20 语文 72/100 380 95/120 260 74/100 390 101/120 10 历史 74/80 3 73/80 27 72/80 80 71/80 50 地理 93/100 50 70/80 80 71/80 90 70/80 90 生物 71/80 100 67/80 140 66/80 370 64/80 200 政治 79/100 290 64/80 270 39/80 590 60/80 380 还能看 到这里都是2026年4月22日写的,下面才是正文部分 2026年4月22日 考试前夕 得知明天就要开始的我: OS:怎么这么快就要考试了?!我都还没怎么背呐!!! 我回家赶紧背了一晚上政治,因为我政治一坨(详见“俺前面的成绩”部分) 最后还搜了几个考试玄学 4 9 2 3 5 7 8 1 6 (以上都是2026年4月22日写的)(震惊我一万年不是4月22日写的) 2026年4月23日 考试的第一天 语文 8:00~10:00 刚发下卷子,我可能是太开心了吧,也有可能是太急了居然只用了 111 分钟写完了看拼音写汉字&选择&古诗默理解性默写,(我没记错我还看了时间做完古诗默写才 8:018:018:01 !),但是我有两个空的古诗看都没看过,惨丢 222 分。 我又用了 111 分钟写完了课外古诗词理解,但有一个题好像空着了没涂答题卡,又惨失 333 分。 不过还行,我认认真真的做完了文言文阅读,除了翻译题不太确定可能会扣 111 分别的答的还挺好,在 8:268:268:26 做完了第一张卷子,并用 888 分钟的时间涂了答题卡。 第一篇阅读还算可以,我答的都比较满,不过概括题 444 分我只答了 222 条,不知道会不会扣分,然后最后一个启示题答的有点怪怪的,用了 181818 分钟,在 8:528:528:52 做完这篇阅读。 第二篇阅读我先答的赏析题,答的特别慢 and 横线给的特别少,我直接懵了…… 不是我在卷子打的草稿有 555 条结果答题卡只有两条横线? 不过我最后也是成功写下来了好吧 第二篇阅读耗费的时间是在太长了用了整整 363636 分钟,我写作文的时候一看已经 9:289:289:28 了还有 323232 分钟收卷,我要在这短短的 323232 分钟里完成构思作文+写作文+检查前面的题+写一写自己空的题,但是我连作文都够呛能写完,于是我赶紧构思作文。 我考前押了一篇作文是“班长给我送伞”的文章,当然我们班班长是我自己但是夸咱自己实在是太写的出手了哈哈哈,而且我看我们区 201820182018 年到 202520252025 年都考的这篇作文(写陌生人的,我的那篇就是写刚开学“我”和班长不认识但是一个暴雨天我给我送伞的古诗)。结果一上考场发现是写《我发现了不一样的自己》 bushi啥音?我准备的那篇作文有一大段写的是被送伞的我的感受,我直接炸了…… 但我灵机一动改成了我给小孩送伞我可太聪明了哈哈哈 到感悟的那段我把为党和人民做贡献编了编写上去了,考完我差点让自己笑死…… (以上是2026年4月23日写的) 政治 10:20~11:20 这次考试居然提前发卷,我竟然在考试时间 444 分钟之前写完了第一面选择题(没错,10:2010:2010:20 开考,我 10:1610:1610:16 已经做了一面了) 第二面写着写着,突然发现有一个广告(bushi啥音),内容如下: “胖东来”坚持严把商品品质,始终做到货真价实,更以“不满意就退货”的实在举措来对待每一位顾客,用真诚与担当赢得人心,成为零售行业有口皆碑的标杆。可见,胖东来崛起的原因是() Emm……但是这家超市就在我们小区东门门口啊(我们小区正对的学校的北门),这不纯纯宣传吗? 第一张卷子全部做完之后我一看表,居然才 10:2110:2110:21!也就是说我刚开考 111 分钟就写完了整张卷子的 121 \over 221 ? [ 我太厉害啦哈哈哈哈哈哈 接下来就是奇迹时刻: 我在开考后的 333 分钟内答完了全部的选择题 在开考后的第 444 分钟填涂完的所有选择题的涂卡 猎奇的来了,我被第一道大题卡住了,完全不知道怎么答……因为我日常背的不太熟练,但是抄选择题又怕错,最后东拼西凑写出来了,但是耗费了我整整 151515 分钟(二战转折点)! 更猎奇的来了,我下一道大题也是东拼西凑,我感觉我打得还挺快但是也用了 888 分钟。然后第三道大题我用了 666 分钟,还行,其实也有点长…… 没想到再这样的绝境下我迎来了转机(实际是回光返照了):第四道大题我做过原题!!! 然后我竟然只用了 222 分钟就写完了这道大题(bushi) 我满怀信心的看向第五道大题,发现我压根儿不会!我思考了整整 777 分钟最后因为时间不够选择直接过掉,结果没答完卷,自然也没回来补,痛失 666 分!!! 第六个答题我依然不会但我还有点头绪,蒙了一大堆,感觉能得个 111 分(准确来说是痛失 333 分) (就这样持续到作文) 政治论文我没时间写了,只写了观点和“论证”以及冒号,能得 333 分顶天了,考完直炸了…… (以上是2026年4月24日写的) 英语 1:30~3:30 发下来卷子的时候我直接震惊了:不是三张大卷正反满满当当的题出题组你想咋滴? 但我不慌不忙,听力第一大题不仅不慌不忙做完题还抽空把听力原文默写出来了(从小学用到现在初一的绝活),大致展示一下这个大题的听力原文: Listen the question and choose the correct answer, we will say twice every sentences. 我无语了卷子上写的中文听力的时候非要用英语作解释,就害怕我们把题目解释听成第一题是吧出题官? One. What's your favorite animal? Two. Can I bring food to classroom? Three. How often do you play soccer? Four. Would you like some juice or coffee? Five. Let's order some salad! 听力一共有四个大题,第一大题太简单了(我说实话是个人都能全对),第二大题也挺简单的,第三四大题听原文排序我感觉挺简单的但我们班有不少人说听力播的太快了说的是啥都没听懂(bushi) 笔试部分第一大题依旧非常easy(for me)。这次居然还有一个考韵点的但是不难。 笔试第二大题是完形填空直接秒了,第一张卷子就这么被我KO了。 下一题是A篇阅读,也是简简单单直接秒了,做完一看时间 1:481:481:48,才开考 181818 分钟,这说明了啥? 这说明我在 181818 分钟内做完了:15道听力选择题+5道听力排序题+默写了5道听力题的原文+10道选择题+10道完形填空+一篇阅读 bushi我让我自己的速度震惊到了 然后我愈战愈勇,到 303030 分钟后的 2:182:182:18 ,我已经又做完了:阅读选择+阅读短文极限七选五+10道语法填空+两篇长阅读理解 此时我有点困小睡一会睡到 2:402:402:40 嘻嘻 然后我开始构思作文却没想到作文草稿我居然能打到 3:073:073:07 最关键的是答题卡给的空间压根儿不够我写的,最后我删减了一些在 3:183:183:18 答完卷子 (感觉英语稳了) 这波也是直接让我重拾信心了好吧 历史 3:50~4:50 OK监考老师良心了一波提前 777 分钟发卷。 我开挂了在考试开始前的 555 分钟写完了第一面的选择题(没错,3:453:453:45)。 我震惊自己一万年在考试开始前 111 分钟写完了第二面选择题,把第一张卷子写完了。 也就是说,考试没开始我已经写完卷子的 121 \over 221 了?!(依旧开挂) 然后我在 3:513:513:51 写完全部选择题,共 252525 题,此时距离考试开始时间仅仅 111 分钟…… 我在 888 分钟内涂完选择题的卡后立即做第一道大题,难度一般就是字有点多,也是在 4:174:174:17 写完了好吧? 剩下的两道大题我也只用了 202020 分钟就写完了,此时是 4:374:374:37,距离考试考试仅仅 474747 分钟,我就答完卷子了……(其实你仔细算就会发现是距离考试结束还剩 131313 分钟,不过整体还算比较的快也是没有任何压力的) 结束语 感谢大家在繁忙的生活中抽出几分钟来看我的帖子,谢谢🙏 此处特别感谢用户@prediction指出的markdown语法瑕疵和用户@铭程dsg(关我必回)提醒的已上升到榜九 也感谢在这个帖子认识的@prediction@风起时想你@睿@铭程dsg(关我必回)@不睡觉的魔弹射手@爱笑的暮江吟@༺ཌༀ一只猪·郑则则·互关ༀད༻ 内容 编写时间 文章介绍 2026年4月22日 文章背景 2026年4月22日 考试前夕 2026年4月22日 语文考试 2026年4与23日 政治考试 2026年4月24日 英语考试 2026年4月25日 历史考试 2026年4月26日 (震惊万年是2026年4月24日写的) (震惊两万年是2026年4月25日写的) 持续更新中…… 关注我,点个赞吧!谢谢
rt. 巅峰赛#33 参加人数有点少,我直接上秩序白银了 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 艾特环节: @暮雨朝云—月落 @AAA终焉赌命齐哥 @༺ཌༀཉི༒G.T.I༒༃ༀད༻ @超唐鼠王—金雨晗(打三角洲的处) @百大游戏解说官🤔 @毒豌
三角洲大号:bbFps三角洲,小号:bbFbs三角洲(两个都是手游),端游:YJJ不是yjj(暂时别加) 二、PCL (CE)(社区版,带联机隧道)下载安装 1. 下载地址(GitHub 社区版) https://github.com/PCL-Community/PCL2-CE/releases 打开后,下 PCL2-CE.zip(选最新发布的)。 2. 安装步骤 和 PCL2 一模一样: 解压到纯英文路径。 双击 Plain Craft Launcher 2.exe 启动。 首次启动自动装环境,进软件后点顶部联机就能用联机隧道。 三、首次打开必做(避免报错) 路径全英文:不要放桌面、中文文件夹里。 关闭防火墙 / 杀毒:安装时可能误报,允许通过。 Java 不用自己装:PCL2/CE 自带,不用额外下。 四、打不开 / 报毒怎么办 报毒:添加信任 / 暂时关杀毒,官方包无毒。 打不开:检查路径是否有中文、解压是否完整、重启电脑再试。(PCL自己下)或问@Young-Chen 接下来是联机 一、准备工作(所有人都要做) 下载安装 PCL2 或 PCL (CE)(官网 https://pcl2.org) 在 PCL 里下载 完全相同的 MC 版本(比如 1.20.1),模组 / 整合包也要一模一样 关闭电脑防火墙(或放行 Java/MC),避免被拦截 二、房主操作(开房间的人) 启动游戏,打开局域网 PCL 选好版本,点「启动」进入 MC 进入你的存档 → 按 ESC → 点「对局域网开放」 点「创造一个局域网世界」 左下角会出现 5 位端口号(如 55555),记下来 PCL 里创建联机房间 保持游戏别关,切回 PCL 顶部点「联机」→ 右侧「创建房间」 弹窗点「继续」→ 输入刚才的端口号,填个房间名 → 确定 房间创建好后,点左侧「复制连接码」,发给好友(QQ / 微信都行 ) 三、好友操作(加入房间的人) PCL 里输入连接码 打开 PCL → 顶部「联机」→ 左侧「建立连接」 粘贴房主给的连接码 → 确定,提示「连接成功」 进入游戏,加入服务器 PCL 启动和房主一样版本的 MC 进入游戏 → 点「多人游戏」→「直接连接」 PCL 联机面板里,点房间,复制地址,粘贴到游戏里 → 加入服务器 四、PCL (CE) 额外说明 界面和 PCL2 基本一致,操作完全相同 首次进「联机」要注册 / 登录账号(用邮箱即可) 联机前在设置里填好用户名,编码选默认,勾选路径选项 五、常见问题 ❌ 找不到房间:版本 / 模组不一致、防火墙没关、不在同一网络(异地要用 PCL 联机隧道) ❌ 连接超时:端口号记错、游戏没开局域网、房主没在 PCL 创建房间 ❌ 提示「无效会话」:离线模式没开,或房主没关「在线模式」 如果没用,请私信 666,有生之年Σ(っ °Д °;)っ尽然上榜了,多亏了@徐梓轶,谢谢
接上回,我们背着书包向楼上一路狂奔,终于卡着铃声进入了教室。 我们刚回到座位上,老师就走进了教室。 与其说是在走,不如说是飘着过来的,她的腿是一块一块的碎骨头,磁悬浮一样飘在底下,似乎还沾着一些血沫。 “上课” 她的声音很尖锐,和广播里的声音很像,但是又没有那么沙哑,让人听了就感到头疼。 周围的同学有一半被感染了,身体扭曲成一个诡异的姿态,脸部模糊,五官似乎是消失了。 “起----立----” “老---师---好---” 他们的音调诡异,尾音拖得很长,动作整齐的像机器人。 忽然,他们齐齐转过头,前排的同学脑袋拧成了180度,眼睛死死盯着我们。 老师从讲台上那把破旧的椅子上站起,飘到了我们附近。 几乎贴着我们移动的距离让我能清晰地闻到她身上的血腥的味道。 她绕着存活的学生转了几圈,似乎是没能找出破绽,回到了讲台。 虽然脸部模糊,但我们仍能感受到她的愤怒——那是一种令人窒息的威压,虽然很微弱,我却能清晰地感觉到那种束缚感。 站回讲台上,她开始讲课,尖锐的嗓音刺得我脑袋生疼。
正在制作我的世界动画中... 。。。
感谢我弟弟贡献的帖子!@徐梓轶 各位ACGO社区的前辈、编程爱好者们: 大家好!我是一名初一学生,也是一名对编程充满热爱的“追光者”。今天,我终于正式注册成为ACGO社区的一员,内心的激动与期待难以言表,特此发帖,与大家分享这份喜悦。 最初接触编程,是源于一次偶然的机会。当我第一次在屏幕上敲出代码,看着电脑按照我的指令输出结果时,那种“创造”的感觉瞬间击中了我。从那以后,我便一头扎进了编程的世界,开始系统地学习C++语言。在学习的过程中,我遇到过不少困难:有时候一个语法错误会让我调试半天,有时候一个逻辑漏洞会让我百思不得其解。但每当我克服这些困难,成功运行出代码时,那种成就感又会让我充满动力,继续探索编程的奥秘。 在学习编程的日子里,我也结识了不少志同道合的伙伴。我们一起讨论问题,分享经验,互相鼓励着前进。但随着学习的深入,我渐渐意识到,编程的世界远比我想象的更广阔。当我遇到一些进阶的问题时,常常会感到力不从心。这时,我开始在网上寻找学习资源,而ACGO社区的名字,也一次次出现在我的视野里。 我曾无数次浏览ACGO的帖子,看着前辈们分享的算法解析、竞赛经验,还有初学者们的成长故事,心中满是向往。这里不仅有海量的编程题库,能让我在实践中巩固所学;更有来自全国各地的编程高手,他们的思路和方法,是我在学习道路上最珍贵的宝藏。之前因为没有账号,只能默默潜水,看着大家热烈讨论,却无法参与其中,那种“隔岸观火”的感觉,让我一直盼望着能早日加入这个大家庭。 今天,这个愿望终于实现了!注册成功的那一刻,我仿佛拿到了通往更广阔编程世界的入场券。接下来,我计划一边继续夯实C++的核心知识,一边在ACGO社区里,从入门算法题刷起,逐步提升自己的解题能力。我会认真阅读前辈们的技术分享,积极参与社区的讨论,遇到不懂的问题,也会虚心向大家请教。我知道,编程之路没有捷径,每一次进步都需要付出汗水,但我已经做好了准备。 作为一名编程初学者,我深知自己还有很多不足。比如在算法优化、代码效率方面,我还只是刚刚入门;面对复杂的编程问题时,逻辑思维还不够严谨。但我相信,只要保持对编程的热爱,在ACGO社区这个优秀的平台上不断学习、不断实践,我一定能慢慢弥补这些不足,离自己的编程梦想更近一步。 最后,再次感谢ACGO社区提供的学习交流平台。未来的日子里,希望能和社区的各位前辈、伙伴们一起,在代码的世界里探索前行,共同成长! 此致 敬礼! 一名在编程路上不断前行的初一学生 2026年4月27日
听了深深的十年之约以后觉得很适合改毕业季,试试看 回望那些 在校园续写着未完的梦 属于我们的热烈与懵懂 还在翻涌吗 六年晨昏 当日出再次染亮了云层 还好始终有你陪我见证 这旅程 黎明的光点 在眼前浮现 才发觉我们 走过了好远 每个朝夕瞬间 庆幸有你在我身边 就让那一个六年 约定成永远 就让每一场奔赴 是携手并肩 时间流转更迭 初心永远不会变 每个你都不可或缺 流星划过的弧线 定格了瞬间 奔赴山海的祈愿 一定会兑现 日升月落多少遍 无数次默念 若此次分别 坚信仍会再见 迎着晨风 与你一起编织这场青春的梦 因为我们的灿烂与挚诚 才与众不同 时针转动 让回忆沿着路途铺满了晚风 还好始终有你温暖着我 这青春征程 黎明的光点 在眼前浮现 才发觉我们 走过了好远 每个朝夕瞬间 庆幸有你在我身边 就让那一个六年 约定成永远 就让每一场奔赴 是携手并肩 时间流转更迭 初心永远不会变 每个你都不可或缺 流星划过的弧线 定格了瞬间 奔赴山海的祈愿 一定会兑现 故事从没有句点 蔓延成无限 若此次分别 依然坚信会再见 就让那一个六年 约定成永远 就让每一场奔赴 是携手并肩 时间流转更迭 初心永远不会变 每个你都不可或缺 流星划过的弧线 定格了瞬间 奔赴山海的祈愿 一定会兑现 日升月落多少遍 无数次默念 若此次分别 坚信仍会再见 (相信啊) (六年啊) 若此次分别 坚信仍会再见 再见
先问问大家遇到抄袭你帖子的人会有什么反应? 我真服了,进站就看到这条抄袭帖,而且还是抄袭榜5的一条 不是我真想问问 你没看过acgo发帖规范?您可太棒了 哎,您知不知道,严重算抄袭剽窃,轻度算禁言啊? 总有一天,您会需要我去某不知名监狱保释您 大家看看 和榜单上那条GESP有什么区别???
7891789178917891 爱上对方过后就哭了 。,。,。。。,。。。。‘;乐扣乐扣;拉开距离科技;lkjkkjlkjl卡罗拉看开了’
@Xylophone 八下物理难度是否 >>>>>> 八上物理?
rt. 这是 C++23,难道我们的 C++ 要变成 python 了吗
https://www.acgo.cn/application/1811737919264829440 球球了,加个团队吧
复杂度类型 规范符号 核心特征 典型场景 常数空间复杂度 O(1)O(1)O(1) 空间固定,与 nnn 无关 仅定义少量变量 sum/cnt 、简单条件判断 对数空间复杂度 O(logn)O(\log n)O(logn) 空间随 nnn 的对数增长(增长极慢) 二分查找的递归调用栈、平衡二叉树的递归遍历 平方根空间复杂度 O(nO(\sqrt{n}O(n ) 空间随 nnn 的平方根增长(亚线性) 数组分块(存储 nnn 个块的汇总信息)、根号分治算法 线性空间复杂度 O(n)O(n)O(n) 空间与 nnn 成正比(最常用) 存储 nnn 个元素的数组 / 结构体、简单哈希表 线性对数空间复杂度 O(nlogn)O(n \log n)O(nlogn) 空间随 nlognn \log nnlogn 增长 分治算法的中间结果缓存 平方空间复杂度 O(n2)O(n^2)O(n2) 空间与 n2n^2n2 成正比(增长较快) 存储 n×nn × nn×n 个元素的二维数组(如邻接矩阵)、暴力 DP 的二维状态表 立方空间复杂度 O(n3)O(n^3)O(n3) 空间与 n3n^3n3 成正比(极少用) 三维 DP 的状态表、三阶矩阵乘法的临时数组 指数空间复杂度 O(2n)O(2^n)O(2n) 空间随 2n2^n2n 爆炸增长(几乎不用) 暴力枚举子集的递归栈(仅理论场景)
你们自己看吧,寻找比我还惨的人,来给我心里安慰!!!!
完啦!!!!!!!!!!!!!!!!!!!!!!!!!!! 明天就要期中考试了(4.28,4.29) 没事,考完放五一 要调休 NO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(互关)
@AC君 我建议让AC助手改成独立的一个板块,可以对它自由提问,错的题目可以在题目界面问相关内容,自己的版块可以学习DEEPSEEK一样提问和编程相关的内容,且可以选择语言。不然我都懒得用AC助手呢!AC助手可以改成帮助编一些伪代码之类并且可以调用错误样例,再用通俗易懂的话语帮助用户理解错在哪。这样就会有更多爱学习的用户去用它了,再建议不要只为了题目,改成可以提问所有相关编程的姿势,可以让它给我们上网搜索推送一些精选视频。 如果能改好,ACGO就蒸蒸日上了!
我最快记录
也是闲着没事,来瞎搞了。 有人知道用1,2,3怎么组成最大的数字吗,只用1,2,3,不能加其他任何东西。 举个例子:123。 如果有人解出来,我吃1000000000000000000000000幺克💩💩💩 大佬们展示技术的时候到了
警告:五年级以上看不懂可能无法进 NOIP @YHZ@YHZ@WCQK@WCQK@STARS_SEEKER@STARS_SEEKER > 请不要发布无意义评论,否则会删评。若发布大量发布类似“qp”“ddd”等评论也会删,发布一次无所谓 > 本篇讲一些前置知识,有点杂,排版和内容可能不是很好,语文也很差,请见谅。由于时间较为零碎,完成不知道要几个世纪了 前言(跳过本部分并不影响您阅读): 先说一下我为啥写这个,AVL 树在 OI 中似乎啥用没有。但是我觉得学起来挺有意思的,对学红黑树或许有那么一丁点的帮助(?)。就当巩固一下平衡树再提升一下思维吧。 为啥我觉得指针比数组更看得懂呢🤔 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 概览 因为 ACGO 这边的同学知识面普遍较浅,我就讲的稍稍前面一点,但是总不可能让我给你讲输入输出的对吧。二叉树基础(指针),BST,平衡树的旋转操作,平衡被破坏的情况。写的浅一点。鉴定为想水一篇精华帖。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 二叉树基础 或许并没什么好讲的,但是因为我偏爱指针而且大部分人都不写指针我就来讲一下(吧)。 首先我们建立一个结构体,用于储存二叉树节点的信息,如下: 其中 Treenode(int v):val(v),l(nullptr),r(nullptr){} 是构造函数。我们每创建一个新的节点,调用这个构造函数就可以“初始化”这一节点。这里的作用是将该节点的值初始为 vvv,左右孩子指针初始为空。 接下来建立一个指针数组,用于存储指向节点 iii 的指针。 这里根据实际情况选择是否需要。像后文所讲的 AVL 树就不需要。 然后是输入,这里的输入方式是每行给出节点 iii 的左右孩子,若为 000 则代表它没有孩子。 前序遍历:顺序为根,左,右,递归即可: 中序遍历:顺序为左,根,右 后序遍历:顺序为左,右,根 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 二叉搜索树(BST) 觉得有点跑题了赶紧回来 首先我们了解一下 BST 的基本概念。BST 是一种特殊的二叉树,满足以下性质: 1. 空树为 BST 2. 若左子树不为空,则左子树的所有节点权值小于根节点 3. 若右子树不为空,则右子树所有节点权值大于根节点 4. 二叉搜索树的所有子树均为二叉搜索树 看着很麻烦,但是你先别急。实现起来真的很简单。 节点结构体 不多赘述.具体请参考注释。 插入 主要是个判断,大概这样: 首先,如果与当前节点值相等:计数器加一,返回 如果小于当前节点:有左孩子,递归左孩子;否则新建节点 如果大于当前节点:有右孩子:递归右孩子;否则新建节点 别忘了增加子树大小。 查询前驱——小于 VALVALVAL 的最大数 和插入差不多,因为二叉搜索树保证了 左子树<根节点<右子树。根据这条性质我们可以轻松实现查询前驱的功能。具体实现请参考代码注释。 查询后继 和前驱一样的,只不过反了一下,参考注释即可。不多赘述。 删除 棍木 查询第 K 小 也是递归实现,若在左子树则递归左子树,在当前节点则直接返回,当在右子树的时候记得减去左子树和当前节点的数量。 查排名 因为二叉搜索树的性质是左子树 <<< 根节点 <<< 右子树,所以当找到目标值,排名就是左子树的大小。若目标在右子树,则为右子树的查询结果加上左子树大小、当前节点值重复的数量。 完整代码就不放了。那么这样我们就得到了一个朴实无华的 BST 代码。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 平衡树的旋转与平衡调整 使我的节点旋转 旋转是平衡树维持平衡的一个重要方法。它可以在不违反二叉搜索树的性质下降低树高。这里我们来讲左旋(zag)和右旋(zig)。 右旋 先来讲右旋,其实你学完右旋就能直接推出左旋了。 下面给出两幅图,各位可以进行理解。分别是对于节点 A 的右旋前和右旋后的: 仔细观察,我们可以发现,对于节点 A 的右旋就像是把他的左孩子“提”起来,事实上我们只改变了三个节点的链接关系: 1. 将 A 的右孩子 C 的右孩子指针指向 A,将 A 的父指针指向 C; 2. 将 A 的左孩子的右孩子的父指针指向 A; 3. 将 A 的左孩子指针指向 A 的左孩子的右孩子。 那么这个时候我们的右旋操作就结束了。[1] 左旋 本质上和右旋是一样的,就是把右旋的操作反了一下。这里不多赘述。具体参考代码实现。 那么在学完左右旋之后我们来学习如何调整平衡树的平衡。这里介绍四种情况。 LL 当前节点左孩子的左子树过长。通过一次右旋调整[2] RR 当前节点右孩子的右子树过长,一次左旋调整 LR 当前节点左孩子的右子树过长,左旋当前节点后再右旋。可以理解为先把他变成 LL 型,然后进行右旋操作。 RL 当前节点右孩子的左子树过长,右旋再左旋 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 鸣谢 用户 帮助 @AAA逃离森林湖的蔡锡龙批发 帮助修改大量格式问题,/bx ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. 为什么这里要说“A 的左孩子的右孩子”而不直接说“C 的右孩子”?因为在实际代码中,我们是通过当前节点,也就是我们现在所指的 A 节点来进行旋转操作,只是间接的经过左孩子节点也就是我们现在说的节点 C。这样子写代码会更好理解点。不过本质上没啥区别。 ↩︎ 2. 旋转当前节点 ↩︎
共27069条