关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx

上传人:b****6 文档编号:8219121 上传时间:2023-01-29 格式:DOCX 页数:9 大小:196.10KB
下载 相关 举报
关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx_第1页
第1页 / 共9页
关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx_第2页
第2页 / 共9页
关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx_第3页
第3页 / 共9页
关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx_第4页
第4页 / 共9页
关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx

《关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx》由会员分享,可在线阅读,更多相关《关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx(9页珍藏版)》请在冰豆网上搜索。

关于丰满二叉树节点与树枝间的关系问题答薛问天先生.docx

关于丰满二叉树节点与树枝间的关系问题答薛问天先生

关于丰满二叉树节点与树枝间的关系问题答薛问天先生

沈卫国

本文是回答薛问天先生“为什么二叉树遍历节点不能遍历所有的无穷枝?

”一文的。

薛先生在该文的最后总结说:

“你要使该节点对应一个无穷枝,就必须选择某种性质,从这无穷枝中按照此性质选择其中一个无穷枝。

但是最后导致的结果是你遍历的无穷枝都具有此性质,从而遍历不了不具有此性质的无穷枝,也就是说你遍历不了全体无穷枝。

当然这只是一种举例和解释,严格意义上这还够不上无穷枝集合不可数的证明。

要证明无穷枝集合不可数还要使用对角线方法。

首先,薛先生的上述说法,会导致矛盾。

他说只证明了我未证明实数可数,而他只是“举例和解释”,不能说证明了实数不可数。

但是,如果真的“只能”如薛先生那样,选定特殊的枝去与树中节点对应,那就意味着必有树中的其它枝不能再与节点对应,而树的全部节点当然可数,于是,这实际不就是证明了实数不可数(总有枝数多于节点数)?

何须再有康托对角线法?

或者说,此法实际本质上与对角线法是同构的。

而如果情况并不是“只能如此”,而是仅仅他所列举的这些特殊的定义的、刻意安排的枝与树中所有节点一一对应后,才会有其它枝不能再去与节点对应(节点已经“用完”。

有意思的是,这里本质上与对角线法是一回事:

对角线法本质上(尽管康托没有明说或者根本没有意识到)说的是“如果”有个特殊的前提,即一位(即树中的一层)仅仅可以对应于一个实数,必有多余的实数不能再与位再对应上,因为位已经“被”“用完”了。

你也可以这么看,事先选定一个实数(对角线上后来“产生”的那个),就是“令其”不会被任何位对应上(对应上的是其它实数);而薛先生这里,是选出一些特殊形态的枝(实数),令它们与所有已经数到的层的所有节点一一对应上,于是我们没有“选到”的其它那些一般形态的枝,必然不会再能与已经“名花有主”的那些节点去“一一对应”了。

从另一个角度,我们是不是也可以这么看,就是你实际是“选定”了另一些你原先“选定”的那些特殊形态枝之外的枝,反正使它们不会再去与已经“被用完”节点去对应?

所以二者本质是一回事),也就是说,我们还有“可能”有其它方法可以使所有枝与节点一一对应上,具体说就是对于与节点对应而言,薛先生没有“选上”的那些枝,或者说“故意”不去选的那些枝(也可以说“故意”选一些枝不去与任何节点对应。

本质一回事。

),在其它对应方式下,其实完全是“有可能”可以和节点对应上的。

也就是有可数的“可能”,也就是薛先生并没有“证明”我的“二叉树法”“并未证明”实数可数。

总之,如果薛先生认为他的办法是绝对的,那他已经证明了实数不可数,而无需再像他所说的再去用对角线法;而如果薛先生认为他的方法是相对的,那他就没有如其所愿地“证明”我没有证明“实数可数”。

也就是,他横竖要陷于矛盾之中。

薛问天先生认为,丰满二叉树的每一个节点,都对应无穷枝,所以,树上的每一个节点是可以遍历到的,而枝不行。

也就是不可数。

但薛先生显然忘记了,丰满二叉树上的每一枝,同样也有无穷多个节点。

此外,究竟有没有我们可以数到某一个树枝上的所有节点(穷尽所有节点),但却数不到此枝的情况?

也就是,我们在数到此枝上的任何一个节点时,所对应的被认为数到的枝,都是“路过”此节点的其它枝。

这在什么情况下才可以发生?

因为要确定这个(或这些)“其它枝”不是那个预先选定的“某一枝”,必然在那个导致这两个枝“分道扬镳”的那个层的节点以后的下一层的这两个树枝上的相应的两个节点(分属这两个不同的树枝上的)的数值必然是不同的。

这要求导致两枝“分道扬镳”的那个“分叉”节点之后,还有节点,也就是该层之后,还要有层。

这在有限情况当然是如此的。

就如任何具体的自然数后面还有自然数一样。

但如果对于实无穷而言,如果无穷层后面居然还有层,也就是不能认为该树枝的所有节点,所有层都能被穷尽,这实际是一种潜无穷的观点。

这不符合康托可数、不可数概念的实无穷要求。

另一种看法,就是我们已经“穷尽”了该枝的所有节点,但仍旧不能数到该枝,那么,只有一种可能,就是此树的其它枝比该枝长。

而这显然不符合丰满二叉树的定义。

树中的各枝,都是“等长”的,没有谁比谁长的问题。

于是,我们如果采取实无穷的观点(与康托一致),同时承认树上的枝没有长短之分,那么,如果我们有某一枝我们没有数到,就只能是该枝的起码某一个节点没有被数到。

而这不可能。

于是没有树中的任何一枝会被遗漏(随着节点的被穷尽)。

薛先生自己也说,他假设的那两种特殊定义的枝,不但依赖于选定某层,还要依赖于在该层“之后”要确定该两枝的特殊形态。

由薛先生定义的这两种特殊的枝构成的树,不是丰满树了,是非丰满树。

薛先生用丰满树中的所有节点去与这样的(非丰满)枝去对应,只能要么取与康托完全不一致的潜无穷观点,要么认为在可以穷尽所有枝上的节点的前提下(实无穷观点),他定义的这两种特殊形态的枝的长度,还要长于其它他认为的不会被数到的枝。

不采取这两种态度之一,薛先生根本不可能把他的那种树枝与节点的对应方式进行下去。

总而言之,薛先生误认为我们在操作某层的节点时,既然可以“数到”那些无穷层的枝,那么,当在层趋于无穷时,仍旧还像有限时的情况一样,总还有枝的层要大于操作的层。

这实际是个误解。

在实无穷和丰满树的观点下,已经趋于无穷的“操作的”层与树枝的所谓其它层,二者实际归一,是一回事,它们当然“同步”地趋于无穷。

只是在有限情况时二者不同。

这是讨论整个问题的前提,也就是我们必须在这个前提下去讨论整个问题。

为什么?

因为康托就是如此做的,我们应该与他保持“高度的一致”(你们不是说他的原则不可动摇的吗)。

也就是康托在“构造”那个对角线上的著名的序列(表)外的实数时,是在数到n位时(或涉及到。

“数”太具有“操作性”,仅仅是一个形象化的表述),仅仅保证该实数的前n位的排列组合方式,与所数过(涉及)的前n个其它的实数的前n位的排列组合方式都不一样而已。

此时并没有涉及n+1、n+2等等位(层)的情况。

康托如此,我辈何能不如此,作为康托的铁杆拥趸的薛先生又为什么“刻意”地不去如此?

话已经说到这个份上,应该打住了。

但我现在确实确实成了“话唠”,行文相当的啰嗦。

连我自己都感到特别地是如此。

原因是数学、逻辑文章本来应该具备的点到为止,在现实中根本就行不通。

我即使如此繁复地从各个角度、方面去论述,面对如此显然的事实,几乎就没有一个真正搞清楚我的意思的。

原本不过是一个不超出形式逻辑范畴、难度的问题,由于成了一个著名人物的著名定理,就成了如此难的问题(我先把话放这里:

早晚有一天,这件事要成为研究人类思想、思维、概念更替方面的一个典型“案例”)。

薛、朱这样的“保守派”就不必说了,即使何、吕这样的“改革派”,我们也没少讨论。

因此,我这里不妨再啰嗦啰嗦(生怕对于各位的实际理解力,上面没有讲的太清楚。

尽管实际已经很清楚了)。

总之,像薛先生所做的,用定义、构造特殊形态的树枝的方法去证明什么,或证明没有证明什么,都等于无意中承认了这棵树是“不丰满”的。

而你去用一个不丰满的树的枝去对应一个丰满树的节点,当然可以。

两个可数无穷集合的元素,当然是“可以”一一对应上的,但如此就算证明了一个丰满树的所有枝,永远不能用任何办法去与其所有节点一一对应了吗?

如果这样,就是证明了实数不可数。

而薛先生也清楚,他没有做到这点。

那么好,薛先生就没有排除这种对应的可能性,也就是他并没有用这种非丰满树的办法,如他所愿地证明二叉树法证明实数可数的不可能性。

也就是薛先生的“沈先生用二叉树法证明实数可数不可能,但实数不可数也没有被证明,要证明还要有劳康托对角线法”的说法本身就不成立。

因为有逻辑矛盾。

具体说,薛先生的做法,等于承认在数到树中的第n层时,没有能够穷尽丰满树的前n层的所有组合形态(这些没有涉及、也就是没有被薛先生定义的枝(组合形态)在该非丰满树上不存在)。

我们为了明晰起见,可以设想两棵树,一棵是丰满的,另一棵就是薛先生定义的那些特殊的树枝构成的非丰满树。

我们去用丰满树的所有n层前的节点,去一一对应那棵非丰满树的枝(两个都是可数集合,当然可以),看看出现了什么情况?

你还能像康托在其对角线法中所做的那样,虽然位数(也就是这里的树中的层数)n为任意,但一旦选定或论及一个特定的n时,我们所能确定的,仅仅是n、及其之前的位(层)的状态组合形态及与之对应的那张表中的前n个实数吗?

显然不能。

薛先生自己也说,其定义的那两种特殊的树枝形态(实数形态),是要依赖于大于当时所涉及的那个层数n的,理由当然是显然的:

在一棵丰满树上,能够与n及其前面的各层的所有节点一一对应的,只能是可以确定前n+1层(位)的所有状态的所有枝(此时不算n+1层上的节点了。

或者也可以这样等价地去看:

n层的所有枝或端节点,总数等于n-1层以上的所有层的节点数)。

按照这样的节点与枝的对应方式,我们只要逐层数下去,只能是在这棵丰满树上,所有节点,对应了所有枝,不会有遗漏。

否则就请你具体指出来,究竟哪个枝没有被数到。

特别应该再一次强调,我们这里所使用的原则,与康托在其对角线法中使用的实际完全一样:

在康托那里,是当我们逐位操作直到把所有位看成穷尽了一个实无穷的整体时,就(才)认为最终“产生”了那个著名的对角线上的无穷位的实数。

这里我们也一样,当所涉及的层(也就是位)逐位做下去直到可以看成穷尽了所有层时,这些枝就是无穷层的枝。

而不会像有些人认为的到多少层,只可以数到涉及该层的有限位的枝(此位以下全为零的枝,对应于有理数集合的一个子集合)。

因为很简单,如果是这样,就同时也违法了康托的做法。

你如果声称完全拥护康托的做法,就没有理由否定这里的本质上同样的做法。

我们再回过头来看看薛先生的做法。

薛先生的定义:

定义两个实数:

令α=1/3=0.010101…,β=2/3=0.101010…。

显然α和β的任何位的值均不相同。

我们把小数点后第n位与α不相同但是从此位以后各位全与α各位值相同的无穷枝称为αn类无穷枝;把第n位与β不相同但是从此位以后全与β各位相同的无穷枝称为βn类无穷枝。

另外规定α和β分别称为α0类和β0类无穷枝。

薛先生的遍历方法:

遍历方法

下面我们详细地给出由遍历节点从而遍历所有α类无穷枝和β类无穷枝的方法。

逐层遍历二叉树上的节点。

让0层节点对应两个无穷枝α和β。

以后各层的每个节点只对应一个无穷枝。

对应的规则是:

对于每层的2n个节点,凡是节点的标注同α的该位相同(即1,3,5,…奇数层为0,而2,4,6,…偶数层为1)的那一半(2n-1个)节点,对应与在该位以后各位全与β相同的无穷枝,这样对应的无穷枝相当于所有βn类无穷枝;凡是节点的标注同β该位相同(即奇数层为1,偶数层为0)的那一半(2n-1个)节点,对应与该位以后各位全与α相同的无穷枝。

这样对应的无穷枝相当于所有αn类无穷枝。

这样一来。

在遍历二叉树上第n层的2n个节点时,就刚好遍历了对应的全部2n-1个βn类无穷枝和全部2n-1个αn类无穷枝。

由上面薛先生的原话可以看到,他无论是在定义中,还是在具体的遍历也就是对应方式中,都不能不涉及“该位以后各位”这样的用语。

这当然并不奇怪,我前面已经提到了,涉及某层的节点与可以确定该层前各层的形态的所有枝是可以一一对应的,薛先生要想以较少的枝(薛先生也说这是一个枝的子集)去对应该层前的所有节点,当然只能把该层下面的各层的形态也定义出来,确定下来。

而这显然是违反康托对角线法的原则的。

请去仔细体会对角线法的做法。

对角线法中,我们能不能在涉及(数到)n位(层)时,就可以确定n+1、n+2........等等那些位(层)的取值?

不能吧?

如果可以,还有什么对角线法?

当你认为对角线上产生的那个实数的前n位的组合形态与数过的前n个表中的实数的前位的组合都不一样时,却可以定义、确定大于n位那些组合。

如此,等于承认当n趋于无穷时,总有比n更大的位的值可以被确定(这不能不说一个潜无穷的过程),如此,你还能认为在n趋于无穷时,只能保证n前的不同的情况的对应方式下才能得到的结论,会在总有大于n的对应方式下也被得到?

这种对应方式下,实际康托对角线法也会无效。

得不到任何结论。

因为康托所认为与对角线上的那个新产生的实数的前n位都不同的实数,不会出现在那张表中的前n个实数之中,但却可能出现在表中大于n的位置。

这里出现了有趣的情况:

坚持这种逐位的对应方式,在康托对角线法下不能使全部实数与其每一位(层)一一对应(但这并不是不可数);但二叉树上,坚持这个对应,却完全可以做到(可数)。

而不坚持这种逐位的对应,在二叉树上当然不行,但如此等于同样对康托对角线法的操作原则进行了改动,也就是等于否定了康托对角线法的做法及其结论。

总之,按薛先生的意思引申下去,我们是可以遍历一棵丰满树的所有层及其节点的,但却无法遍历其所有枝。

即就可数性来说,该树对节点而言是丰满的,也就是完备的,对树枝而言却是不丰满的,也就是不完备的。

这就很奇怪了:

固然树上的每一个节点都会有无穷个枝“路过”,但任何一枝也的确有无穷个节点,为何厚此薄彼?

可数个节点,却能构造出远远多于它的不可数个枝,难道有些枝会没有节点?

不合情理。

于是,也就实际上取消了丰满二叉树的实际存在可能,而对一个树的全部树枝而言,我们充其量只能定义、构造一个非丰满树。

除非你认为这些节点也不可数,不可遍历(层是没有理由不可遍历的)。

但这又与实际情况完全相悖。

不值得讨论。

所有薛先生的讨论,反倒是可以成为实数为什么可数,二叉树为什么可以遍历所有枝的很好的诠释。

也就是,薛先生试图用非丰满树枝的情况去否定丰满树的情况,是行不通的。

这就好比你去令一个有理数的特殊的子集合去与自然数一一对应上了,就此下结论说自然数只能对应一个有理数的特殊子集,进而所有有理数不可数一样,是不能成立的(谁都知道,有理数可数)。

对实数其实一样。

你不能随便拉来(定义)一个实数的可数子集,让其与自然数一一对应上了,就说整个实数不能与自然数一一对应了。

没有这种证明吧?

用某种办法不能对应,用其它办法就可能可以对应。

这是两回事,很多人却搞不清楚。

简短的小结:

遵循康托对角线法的实无穷原则,n作为层数(位数),当然可以取任意值,但一旦选定,与其之前的所有节点对应的树枝,必须而且只能是由n前的状态所确定,而大于n层的节点状态不能确定,而是随机选定。

否则等于选定所有树枝的一个子集合。

也不符合康托在对角线法中的“操作”原则。

如果我们在任选层数n时,总有某些枝的大于n的层的状态能够被确定,这就等于承认是一个潜无穷的不可完成的过程。

与我们说任选某一个自然数,总有大于它的自然数一样。

而一旦真的实施此过程,等于选取了潜无穷的观点。

不可能在事实上用本质上有限的“操作步骤”去穷尽整个自然数。

而实无穷的观点,是尽管有上述事实,但还是可以把整个自然数看成一个整体。

也就是操作过程本身尽管只能是有限的,但其总数仍旧是无穷的,是可以看成一个整体的。

于是,在与康托一致的实无穷看法下,树中的层、节点是“数”到哪,确定到哪的,也就是“数”到无穷,就可以确定到无穷。

所有尽管在有限的n时,有n前的层的状态确定,而大于n的层的状态不是“事前”确定好的,而是“事后”随机选的,但这并不意味着在n趋于无穷时,还总有大于n的层在后面(树根在上时,是“下面”)。

因为这是潜无穷的观点。

实无穷下,也就是康托对角线法的实际做法所取的原则下,是位数(层数)趋于无穷,其每位(层)的确定的状态也趋于无穷,不存在在位数趋于无穷时,还有大于已经趋于无穷的位数之上的位数存在,因此也就无论其状态确定(薛先生事先定义好的)还是不确定(只对有限成立),都不应该存在。

因为对实无穷而言,是没有什么对它的“事后”、“其后”的说法的。

否则在还有什么对角线法?

而薛先生正是无意中破坏了这个康托的原则的。

薛先生不得不在实际上否定康托原则的前提下去为康托辩护。

总之,讨论的前提当然是坚持康托实无穷原则下的,也就是层“数”到哪里,枝就确定(该层之前的所有状态)、也只能确定到哪里。

把某些特定枝在该层以下(大于该层)的层的状态也“提前”确定了的情况(薛先生的做法)不能算。

应该提请注意,康托本人,其对对角线法的表述,仅限于其简略的“证明”过程。

根本就没有论及什么“与相应位逐次一一对应是前提”之类的表述。

它其实根本就没有意识到这个前提会成为问题。

因此笔者一再强调这是一个(隐含前提)。

而当本人指出这个问题后,你看看所有这些辩护,其实远远超出康托本人曾经做过的一切。

真好像康托也在或也会如此辩解似的。

也就是,人们用康托从未涉及的东西,在为康托辩护。

其实我总在想,康托如果在世,其水平当然远超这些自命为他的弟子的这些人。

原本是想证明实数可数(像表面看上去远比自然数多的有理数一样)的康托,一定会同意我的立论。

盲目的崇拜,会使一个一旦被揭示,就变得如此简单明了的问题,被搞得如此复杂。

这真是一个典型案例。

早晚会作为研究人类思想变迁史的一个经典而被人反复提及。

我先把话放这里了。

最后再提醒薛先生,千万不要认为只要把某集合的一个子集与自然数对应上了,就算证明了该集合不可数了。

很多人无意中都在犯这个错误。

包括康托本人。

薛先生这里的“特殊树枝构造法”,就是拐弯抹角地在犯这个错误了。

要区分逻辑上的“可以”和“必须”(只能)。

比如,我说对角线法中有一个隐含的假设,也就是所列实数个数与相应位的逐次的一一对应。

结果连个院士也在说:

是呀,表中所列实数个数可数,位数也可数,两个可数集合当然“可以”一一对应,于是,为什么不让它们对应?

我们说,“可以”不是“必须”,“可以”是“不必须”的。

而“不可以”则是“必须不”、“只能不”。

而只有在“必须”或“只能”有这种对应方式的情况下,我们才能说对角线法的确是证明了实数不可数。

也就是,“可数”,就是“可以数出”(可以和自然数一一对应),而不是必须、只能去与自然数一一对应。

一个可数集合,尽可以用某种其它方式与另一个可数集合间有一对多的对应。

就比如偶数集合与自然数集合的关系。

但“不可数”,是不可以(不可能)被数出(与自然数一一对应),也就是“必须”不能被自然数以任何方式一一对应。

你只用一种方式构造了二者间不能一一对应,其它方式下呢?

你没有证明。

难道证明了一种情况下的结论,就等于证明了任何情况下的结论了吗?

如此简单的一个形式逻辑问题,不但在我揭示之前没有人认识到,即使我已经写的如此地明明白白了,居然还不被认识。

对于前者,我是不奇怪的,因为那个前提是很隐蔽的。

但对于后者,我万没想到。

所谓数学人、逻辑人的真实水平、治学态度是如此地不堪。

让这些人自己炒一盘菜出来,不会,但现在你把一盘菜炒好直接放他们鼻子下面,这些人居然闻不出味道。

这就是这个领域学术界的现状。

以上这些话,倒不是针对薛先生的。

但我希望薛先生彻底摒弃对权威的绝对化认识,能从反面考虑问题。

如此,也许能从传统理论的泥淖中“出淤泥而不染”了。

我认为,最为关键的,还是要对康托对角线法的问题彻底搞清楚。

为什么康托对角线法没有如康托所愿地证明实数不可数,搞清楚了,对丰满二叉树法为什么可以证明实数可数就一目了然了。

薛先生完全不必用康托自己都根本没有意识到的那些概念去为康托开脱。

理由我前面已经说了。

再补充一点:

在一棵丰满二叉树上,如何演绎康托对角线法?

它实际上等价于在树上,每“数”一层,仅仅选定(确定)树中一枝。

而康托对角线上用逐位求反(二进制时)的办法产生的那个实数,当然就是树中的一枝、而且是与那些已经选定的枝都不同的一枝而已。

它的每一位的状态,刚好与原先数到该层时选定的那个实数的此位的状态正好相反。

显然,这种特殊的选定办法“选出”的枝,当然不是丰满树上的全部枝!

但这能说明全部枝不存在或者不能被“数”出来的吗?

这完全是两回事。

总之,无论是明确地、还是隐晦地、或是根本没有意识到地用某种对应方式(函数)使一个集合的子集与自然数一一对应上,根本就没有也不会证明该集合不可数。

也就是没有证明用其它对应方式(函数)就不能使该集合与自然数一一对应。

我的所有论述,本质上就是这么一句话。

附录:

薛问天先生的质疑文章

最近,我同沈卫国先生(qygrswg)有一组有趣的跟帖对话。

开始沈先生认为二叉树“拉直了”就是一个无穷枝(实数)的序列,在其上实施“对角线法”,由于二叉树上的无穷枝包括了所有可能组合的实数,因而不可能存在一个不在二叉树上的实数,用以说明康托尔对角线法存在的问题。

后经我指出二叉树“拉直了”构成不了实数序列,话题又转向在二叉树上能否用遍历节点的方法遍历所有的无穷枝的问题。

(沈卫国注:

我始终是如此认为的,不存在“开始”如何的问题)

沈先生认为可以用每一个节点对应于一个无穷枝的方法,只要遍历了所有的节点,就可以遍历所有的无穷枝了。

我说你想得太粗了,你把你的遍历方法说完整了,就可以看出你的方法遍历不了所有的无穷枝。

为此我举例具体说明,如果在遍历各层节点中,每层将标注为1的节点对应为以后全为0的的无穷枝;标注为0的节点对应以后全为1的无穷枝。

用这样遍历所有节点的方法所遍历的无穷枝刚好是所有0类无穷枝和所有1类无穷枝的总和,不多不少也不重复。

由于0类和1类无穷枝是所有无穷枝的真子集,所以该方法遍历不了所有的无穷枝。

沈先生不服,说0类枝和1类枝有个相等(是一回事)的问题,例如0.01111…同0.100000…相等,这里有重复。

他认为【可以有充分的机会排除这种重复后有多余的机会去遍历所有枝。

】好吧!

我们就再举个不重复的例子。

本文引入α类枝和β类枝的概念,它们是所有无穷枝的真子集,证明用遍历节点的方法,只能遍历所有α类枝和β类枝,不可能遍历所有的无穷枝。

这个例子就不存在重复和“通常认为是一回事”的问题了。

2,基本概念

首先看无穷二叉树,如图所示,二叉树上所有节点均标注0或1。

0层共20=1个节点:

[0],1层共21=2个节点:

[00],[01],2层共22=4个节点:

[000],[001],[010],[011],3层共23=8个节点:

[0000],[0001],[0010],[0011],[0100],[0101],[0110],[0111]。

n层共2n个节点,其中有一半2n-1个节点标注为0,另一半2n-1个节点标注为1。

我们把从根节点[0]出发,每层经过一个节点的无穷路径称为无穷枝,显然每个无穷枝上的节点的标注构成的无穷序列,构成单位区间[0,1]上的一个无穷小数(二进制表示的实数0.a1a2a3…)。

由于二叉树是丰满的,包括所有可能的组合,所以二叉树将包括所有的与单位区间上的实数一一对应的所有无穷枝。

定义两个实数:

令α=1/3=0.010101…,β=2/3=0.101010…。

显然α和β的任何位的值均不相同。

我们把小数点后第n位与α不相同但是从此位以后各位全与α各位值相同的无穷枝称为αn类无穷枝;把第n位与β不相同但是从此位以后全与β各位相同的无穷枝称为βn类无穷枝。

另外规定α和β分别称为α0类和β0类无穷枝。

具体写出来,例如:

另外我们分别称所有αn类和βn类无穷枝的总和为α类无穷枝和β类无穷枝。

即:

α类无穷枝=α0∪α1∪α2∪…。

β类无穷枝=β0∪β1∪β2∪…。

显然α类枝∩β类枝=⊙,而且对所有的i,j有αi∩αj=⊙,βi∩βj=⊙,αi∩βj=⊙。

其中不存在任何无穷枝的重复归属。

3,遍历方法

下面我们详细地给出由遍历节点从而遍历所有α类无穷枝和β类无穷枝的方法。

逐层遍历二叉树上的节点。

让0层节点对应两个无穷枝α和β。

以后各层的每个节点只对应一个无穷枝。

对应的规则是:

对于每层的2n个节点,凡是节点的标注同α的该位相同(即1,3,5,…奇数层为0,而2,4,6,…偶数层为1)的那一半(2n-1个)节点,对应与在该位以后各位全与β相同的无穷枝,这样对应的无穷枝相当于所有βn类无穷枝;凡是节点的标注同β该位相同(即奇数层为1,偶数层为0)的那一半(2n-1个)节点,对应与该位以后各位全与α相同的无穷枝。

这样对应的无穷枝相当于所有αn类无穷枝。

这样一来。

在遍历二叉树上第n层的2n个节点时,就刚好遍历了对应的全部2n-1个βn类无穷枝和全部2n-1个αn类无穷枝。

具体说:

……

..

n层2n个节点,其中一半2n-1个节点对应αn枝,另一半2n-1个节点对应βn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1