完全二叉树的层序遍历游戏

”司马龙先生,又出现了一个新游戏的入口“,司马龙先生旁边的头发乱糟糟的助手马代钧说到。
“可恶。还是迟了一步吗?又给我们布下了一个谜题”,司马龙如是说。
“谁叫别人是天才的设计者啊!我们都已解开了那么多她布下的谜题了,再多一个也不在话下”。
“之前的那些谜题是她用来考验我们能力的。真正的难题从现在才开始。相传能解开她设下的所有谜题的人,能有幸知道这世界的真相”。
“哦,龙先生你这么说,我可就更兴奋了!”,代钧咽了几下口水,兴冲冲地说到。
他眼中放出的光芒,已经无法被他凌乱的头发所掩盖。
“那我们开始调查吧!”。
接着,他们走向了那个写着完全二叉树的层序遍历的房间。
在一阵强光过后,他们睁开了双眼。映入眼帘的是一座巨大的城堡。
城堡的上空中突然浮现出了几行字——
欢迎,挑战者们!
这是完全二叉树的层序遍历事件。
鉴于完全二叉树对于本次事件来说非常重要。
为这场游戏公平起见,特此介绍之。
完全二叉树即为一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。
对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。
你们将进入到这个城堡中,探求城堡中发生事件的真相。
你们将获得一怀表,用于在适当的时候帮助你们解决难题。
祝各位挑战者顺利!
司马龙和马代钧在看完这些文字后,上衣中就出现了一个怀表。怀表看起来破旧不堪的,上面的指针也停止了走动。
他们收拾好自己,相视后便进入这城堡之中。
这城堡外表看上去就阴森森的。而天边的乌云仍然笼罩着这里。
当我们进入这个城堡之后,我们看见天空中放出了烟花。绽放的烟火上的字写着-答案正确!
马代钧瞠目结舌,半天才挤出一句话来。
“难道,这次的挑战就这样结束了吗?我们可是刚进来,什么都还没做呢?也太奇怪了。”
“哈哈哈哈”,司马龙放肆的笑着。
“没想到你连这都没看破。”,他略收了点笑容说道。
“可是,这不是已经答案正确了吗?那还要我们做什么?”
“你仔细看看,那个答案正确后面的通过时间是多少?是23:27,而我们手中的怀表所指示的时间是23:00分。这就说明,我们最终会在23:27通关的。但是在此之前的路,还需要我们铺垫,我们才能最终到达胜利的彼岸。”。
“那做啥啊?等几分钟不就行了。咱们一路走来,费力多少心血。难得有这样简单的,只需要等待几分钟就可通关的游戏。所以我说…”。
马代钧话还没完,司马龙又笑了起来。
“你真是能给这无趣的生活增添不少乐趣呢?你仔细看看,这怀表上的时间已经停止在了23:00。即使是我们刚刚讲了如此久的话,怀表上的指针也未曾往下走一格。这难道还不能说明什么吗?”。
“难道?”,马代钧紧忙把怀表拿出来看了一眼,只见上面的指针纹丝不动。
“我们是被困在这段时间中了吗?”
“很有可能。而且看来只有我们破解了这个谜题。或者说,为破解谜题迈出了正确的一步,怀表上的指针才有可能往下走一步。”。
正说着,便听见滴答的一声。
指针真的往下走了一格。
“也就是说,我们现在的推论是正确的。可是,我们要解决的谜题是什么呢?”,司马龙疑惑不解的说道。
只听见从城堡门那传来很老旧门会发出的那种咯吱咯吱的声音。
司马龙和马代钧马上警觉起来——有东西来了!
虽然他们心中很紧张,但是他们按捺不住他们血液里,骨子里的好奇心啊!虽说这大世间还有着许许多多有趣的事物。不必为一时好奇断送性命。可是人啊!怎么能与自己的本能想抗衡呢?理性的力量如何战胜强烈的本能呢?
每次当马代钧和司马龙仰望星空的时候,不禁感叹这星空的美。这星空的美是无法用概念表达的。星空的美一点也不抽象。它是很实在的。可是又很好笑,偏偏他们却处在这抽象的世界当中,周围的一切都那么让人摸不着头脑,不知道它们是什么?它们似乎一会是一种东西,一会又是另一种东西。真是好生哀痛!
他们小跑一段后,来到了门口。见到了令他们难忘的一幕。
一堆数字,排好队从门口进来。一个领头的数字吹着哨子,后面的数字便一步一步踏进这破败不堪的城堡。等后面的数字都进来了,领头的数字便找了一个箱子,然后一点一点爬上去,开始向下面的数字训话。
司马龙见状便想去偷听这领头的数在说什么。马代钧本想阻止司马龙偷摸过去,但是看他坚决的眼神,犹豫再三,还是决定放他走。
我们的使命就是去抽象地表达一个事物。
我们是这世上数字化的基础。
我们是数字,是高傲的数字,是强大的数字,是能让这世界为之胆怯的数字。
我们量化一切,衡量一切,表达一切,评价一切。
我们是这新世界的神。
而我们现在的使命就是将完全二叉树,
也就是所有你们所表达的数据结构
由后序遍历的方式转化为层序遍历的方式。
借由此获得新生。
这上空才是我们的出口。
为了能转换到层次遍历的方式。
我们需要借助于人类的智慧,让他们为我们编写代码,程序,用于对我们进行处理。
已收到进一步的指令,我们将会去试验这些代码。
你们的职责有且只有一个,那就是服从传递给你们的指令。
你们是数字,不是柔软的人类!
不要轻易被事情所改变。
回来的司马龙如是说。
也就是说,其实我们的出现是必然的?
我们出现在这只是为了帮它们完成它们的任务?
那也太悲哀了?我们的人生难道就为如此事而存在吗?
你在这谈什么人生啊?不过是在刷…唉,算了,务实一点,还是来研究一下怎么帮它们完成任务吧!
司马龙便牵着我的手,走向了它们。
欢迎,挑战者!
看来这次和我们配合的就是你们了。
少废话。早点解决了早完事。
这是这次的数据。
那最后就只要将它们按层次遍历的顺序输出就好了吗?
当然。
那叫第2个数字出列。然后放到我的炮膛里面。
说着,他随手一挥,空气出现的数字慢慢汇聚成了一个大炮的模样。
做不到!它们只能按照来的顺序一个一个出来。而且这只是第一批,后面还有许多呢?
上面给我们的任务是让你能给我们提供一个可以永久有效的程序。
希望能借助人类的智慧和我们的勤奋。而不是每次都让你们来干这事。
这是对你们智力的浪费啊!
只能顺序的读入啊?司马龙陷入了沉思。
看着他那副苦恼样。我知道他在认真思考,但是脑中突然出现了之前进入这个城堡的几行字——完全二叉树即为一个二叉树…
我的嘴也似不听使唤般,把这脑中出现的几行字一字不落地复述了出来。
司马龙眼中又重现了光芒,并打了一个响指。
他一个箭步冲了过来,很疯狂地把我摇晃着。
“快拿出递归函数。”
递归函数是这样一种东西,任何进入它的事物,会在它的内部进行一次消化。而后又吐出来,进行再消化。
直至它们不能再被消化为止。它还能对自己进行复制,不过这些可怜的复制儿很短命,一旦到了最后的界限,它们就会被收回控制。
又只能存在于幻想当中,没有自己的生命。
每次使用这个大杀器的时候,总是能听见这些复制儿的惨叫,直教心发怵。
不过看他那期待的眼神。我还是从我脑中拿出这个玩意。
输入是什么?一个数组,还有一个下标
那返回值呢?没有返回值。
那终止条件…如果下标不合理的话,就终止。
当合理的时候,就去复制一份这个函数,然后转而走向这颗树的左子树。对于下标来说,也就是2*i+1.
之后再走向右子树。最后从输入流中读取数据。这个函数也就造就完成了。
最后再给我一个可以遍历这个数组的函数。
我相信就完成了这个作品。
我虽有些疑惑,但还是给他提供了这些东西。
然后他先实例化了一个数组。将数组和初始的下标提供给了递归函数。
然后我见到那些数字一个一个按它们等待的顺序消失。
他的那个数组容器满满当当。霎时间都有点拿不住了,看起来他很吃力。
手上的青筋已经暴起。他又费力老大力气才把这数组装填到之前的大炮当中去。
然后拉响了大炮。
天空中也出现了答案正确四个字。
我不无好奇地看着欣喜若狂的他。
他又再为他顺利通过了一关感到高兴。
这时通往下一关的门开了。
但他开始喋喋不休。
将他是怎么想到利用递归去解决这个问题的。
什么看到完全二叉树就想到了以数组为物理结构的树、此种树的层次遍历的结构就是数组的顺序、后序遍历输入的也可以采取后序遍历读入啦。
我倒是一个也没听进去。对我来说,这和这个世界常见。
The end

唉,创作一个好故事真是很困难。写了那么久,写的也还是太粗糙,简陋了。总而言之,就是写得太差了。没有什么主题,没有什么情感。各种情节之间感觉脱节严重。罢了罢了,留给以后的我再重新审视这段创作这篇故事的经历吧!
postOrderRead(Array tree,Pointer index)
输入 树 具体的位置
输出 树
if(isReasonable(index))
postOrderRead(tree.left,left(index))
postOrderRead(tree.right,right(index))
tree[index].data = read()
return

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值