有一二叉树,中序遍历为DBAECF,前序遍历为ABDCEF,求后续遍历

作者&投稿:梁柱 (若有异议请与网页底部的电邮联系)
数据结构二叉树,已知中序遍历、后序遍历,如何求先序遍历?~


Preorder遍历:访问根节点的操作发生在遍历左和右子树之前。
中间顺序遍历:访问根节点的操作发生在左边和右边的子树中。
顺序遍历:访问根节点的操作发生在遍历左边和右边的子树之后。
下面的序列遍历了DBCEFGHA,序列遍历是EDCBAHFG,以及preorder遍历(在线示例)
解决方案:首先,看到后序遍历DBCEFGHA, A是总根节点。
然后发现中间顺序遍历A在EDCBAHFG中的位置,然后在A的左分支上的EDCB,在A的右分支上的HFG;
重复前两个步骤,最后一个从后序遍历,在中间顺序遍历中搜索相应的点,以及左和右分支…
最后,AECDBHGF可以自行验证。

给定的信息不足够,无法推断出正确的遍历顺序。
只有在给出下列条件才能推算正确的遍历顺序:
1、给定前序与中序可以得到后序(还原二叉树);
2、给定中序与后序可以得到前序(还原二叉树);

注意:给出前序与后序是无法还原二叉树的。原理很简单,因为无法正确推导树根的左右孩子。

先给出结果吧,后序遍历为DBAEFC。解释有些麻烦,尽量能说得清楚一些吧。

前序遍历先访问根节点,然后前序遍历左子树,最后前序遍历右子树,这是一种递归的算法,由于第二步是前序遍历左子树,这样可以设想根节点的左子树还有一左子树,就会再先访问左子树的根节点,再前序遍历。中序遍历先中序遍历左子树,然后访问根节点,最后中序遍历右子树。

我们看到前序遍历的结果为ABDCEF,可以知道根节点是A,再看中序遍历的结果为DBAECF,可以看到根节点A在中间,两个节点DB肯定在根节点的左子树,节点ECF肯定在根节点的右子树。再看前序遍历的结果,根节点A后访问B(所以B肯定是D的根节点),最后是D,所以再看中序遍历(先中序遍历左子树),所以D是B的左子树。右子树部分也类推。很容易看到C是右子树的根节点(前序遍历先访问根节点),然后可推出E是左子树,F是右子树。

画了一幅图片,可能看图好理解一些



自己画几遍就清楚了 DBEFCA


什么是先、中、后根遍历?什么是左子树、右子树和二叉树?
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:(1)中序遍历左子树 (2)访问根结点 (3)中序遍历右子树 如右图所示二叉树,中根遍历结果:DBEAFC 3、后根遍历一般指后序遍历,指在访问根结点、遍历左子树与遍历右子树三者中,首先遍历左子树,然后遍历...

二叉树中,什么是前序,中序。后序!
2、若在左右子树的后面被访问叫做后序,其顺序为左右根 3、特点为后续遍历的特点是执行操作时,肯定已经遍历过该节点的左右子节点,故适用于要进行破坏性操作的情况,比如删除所有节点 二叉树是数据结构中常被问到的相关知识点,也是需要了解的一个知识点,可以总结一下二叉树的前序、中序、后序遍历的...

如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是()?_百度知...
答案B。解决的思路一般有两种:1、将先序序列和各个中序序列结合起来,联合起来还原二叉树,如果可以还原,就是正确的;将先序序列看成是一个进栈序列,如果通过栈后能够得到的就是合法的中序序列,否则就不是。2、答案1,abc进栈不可能得到cab,不可能得到,答案2,abcdefg进栈是可以得到abcdefg的...

已知一棵二叉树的层次遍历序列ABCDEFG,中序遍历为BAFGDCE,则这个二叉树...
ABCDFGE\/\/ 中序遍历序列: BAFGDCE\/\/ 后序遍历序列: BGFDECA\/\/ 层次遍历序列: ABCDEFG\/\/\/ 二叉树示意图:\/\/ A\/\/ \/ \\\/\/ B C\/\/ \/ \\\/\/ D E\/\/ \/\/\/ F\/\/ \\\/\/ G\/\/#include <stdio.h>#include <stdlib.h>#define OK 1#define OVERFLOW -2typede...

一棵二叉树的先根遍历为ABCDEFG,中根遍历为CBDEAGF,则其后根遍历为
所以这颗二叉树应该是 a b***f c***d***g e 7、二叉树出来了,后序的原理最上方讲了,剩下的就好办了。先左孩子,然后右孩子,最后当前节点。8、当前节点为A时由于左右两个子树还没有访问所以要先访问完左右子树才能访问A.9、b同A 10、c没有左右孩子,所以它是第一个。11、c访问完了...

已知一颗二叉树的后序遍历结果是EDCBIHJGFA,中序遍历的结果是EBCDAFHIG...
后序遍历结果是EDCBIHJGFA 中序遍历的结果是EBCDAFHIGJ 二叉树还原如下:A B F E C G D H J I 所以,前序遍历结果为:ABECDFGHIJ

已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列...
然后再看中序遍历,e前面只有一个d,所以d是e的左孩子节点,d的位置得到;剩下的b和a就在e的右子树。然后再看后序遍历,dabec,d是一个叶子节点,那么就还有一个叶子节点,那么这个节点就一定是a,那么b就是e的右孩子节点,最后再结合中序遍历就可得出所表示得二叉树。(如果这步没看懂,可以在...

某二叉树的先序遍历序列为cabfedg,中序遍历序列为abcdefg,则该二叉树...
【答案】:C本题考查数据结构基础知识。根据题中所给的遍历序列,可知其对应的二叉树如下图所示。由图可知,该树不满足完全二叉树和满二叉树,并且,本题没有涉及权值概念,不属于最优二叉树。在图中可以看到,这棵树满足平衡二叉树,因此选择C选项。

设一棵二叉树的中序遍历序列为BDCA,后序遍历序列为DBAC,则这棵二叉树...
这个先根据后序遍历确定根节点为C。再根据中序遍历得到根节点的右孩子为A。然后根据后序遍历确定,B是根节点的左孩子,D是B的孩子。再根据中序遍历,得到D是B的右孩子。根据这个画出二叉树。综合一下,前序遍历结果是:CBDA。

某二叉树的中序遍历为CBADE,后序遍历序列为CBEDA,则前序遍历序列为_百...
该题答案选择D选项。中序遍历:访问根节点在左右子树之间,即左—根—右。来后序遍历:访问根结点在源左右子树之后,即左—右—根。由定义可以知道:1、后序遍历中最百后一个就是树根结点,即A结点。2、在中序遍历中,根结点左边的是左儿子集,右边的是右儿子集。所以二叉树应该为度A、\/\\、BD...

江源县17686863879: 若某棵二叉树的后根遍历序列为DBEFCA,中根遍历序列为DBAECF,请画出这棵二叉树 -
才旦品金水: 后根遍历:DBEFCA 中根遍历:DBAECF 则还原二叉树如下:

江源县17686863879: 是的,是已知前序遍历和中序遍历,建立二叉树具体应该怎么办呢 -
才旦品金水: =可以采用二分法. 比如说先序遍历是ABDCEF 中序遍历是DBAECF 因为先序是中左右,所以先序遍历第一个必定是根节点,所以根节点是A 因为中序遍历是左中右,所以中序遍历的根节点的左子树必然在根节点前面,右子树必然在后面,也就是说 DB是A的左子树,ECF是右子树.这样就先建立A,然后开始二分. 以左右分别为一种情况,左子树先序是DB,中序是BD,所以B是D的左孩子,然后另一边也是一样,就可以得出C是A的右孩子,然后再以C二分.得出C的左孩子是E,右孩子是F,所以后续遍历就是DBEFCA. 无论如何复杂的二叉树都是用这种方法、

江源县17686863879: 一颗二叉树的先序遍历序列为:ABDCEFG,中遍历为:DBAECF,请画出这棵二叉树的逻辑结构,并给写出其后序遍历序列 -
才旦品金水: 结构图: AB C D E FG 后序遍历:DBEGFCA

江源县17686863879: 设一棵二叉树的中序遍历结果为DBEAFC,前序遍历的结果为ABDECF,则后序遍历结果为 -
才旦品金水: 依据前序遍历序列可确定根结点为A;再依据中序遍历序列可知其左子树由DBE构成,右子树为FC;又由左子树的前序遍历序列可知其根结点为B,由中序遍历序列可知其左子树为D,右子树由E构成...... 同理推算FC的排列顺序,在草稿纸上画出树的结构,再自己写写后序遍历吧!

江源县17686863879: 遍历序列的基本定义是什么?
才旦品金水: 2.遍历序列⑴中序序列中序遍历二叉树时,对结点的访问次序为中序序列【例】中序遍历上图所示的二叉树时,得到的中序序列为:DBAECF⑵先序序列先序遍历二叉树时,对结点的访问次序为先序序列【例】先序遍历上图所示的二叉树时,得到的先序序列为:ABDCEF⑶后序序列后序遍历二叉树时,对结点的访问次序为后序序列【例】后序遍历上图所示的二叉树时,得到的后序序列为:DBEFCA遍历注意⑴在搜索路线中,若访问结点均是第一次经过结点时进行的,则是前序遍历;若访问结点均是在第二次(或第三次)经过结点时进行的,则是中序遍历(或后序遍历)

江源县17686863879: 已知二叉树的中序遍历是DBEAFC.前序遍历是ABDECF.后序遍历怎么算? -
才旦品金水: 先理解前序和中序的涵义: 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树.在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树. 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树.在遍历左...

江源县17686863879: 设一颗二叉树的中序遍历结果是DBEAFC,前序遍历结果是ABDECF,则后序便利结果是什么?
才旦品金水: 这种题就是根据这两个序列画出对应的树. 前序遍历结果是ABDECF 中序遍历结果是DBEAFC 1.先看前序,那么最先遍历的就是A,因为是前根遍历,所以A就是最根的结点,也就是所说的root结点.(这要看懂,这个不懂理解就有点恼火) 2.先在确立了一个根A..那么现在去看中序遍历.中序是根是在遍历完左右子树再访问的根,所以DBE是A的左子树的结点.FC是A的右子树. 3.对于左子树的DBE结点.那么哪一个是根结点呢,现在就和步骤1一样.看前根中DBE中的哪个是最先出现的,那么它就是这三个结点的根.那么得出是B.然后找出B的左右子树分别是D和E.如此循环.就可以得出结果了.不明白再问.

江源县17686863879: 根据下图给出的二叉树,求出先序遍历、中序遍历和后序遍历的结点序列 a / \ b c / / d e \ f -
才旦品金水: 先序遍历abdcef 中序遍历dbaefc 后序遍历dbfeca 其实这种问题的解法很简单,你绕着二叉树从根节点左边画一条线绕过整个2叉树然后回到根节点,先序遍历就是线经过左边的时候的顺序,中序遍历就是线经过下面的时候的顺序,后续遍历就是经过右边的时候的顺序,掌握方法了终身都不用问别人了!见下图

江源县17686863879: 设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为多少? -
才旦品金水: 其实很简单,看前序遍历结果,A肯定是树根,那么从中绪来看,以A为中点,可以分为左右子树,依次类推,结合前、中序的队列,最后可得其后续遍历:DEBFCA

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网