前序中序后序遍历_构造二叉树和二叉树遍历

一、构造二叉树

①:在数据结构中,我们一般都会有这样的题目:由(前序和中序)或者(后序跟中序),画出该二叉树,我先说前序和中序的:我们只需要记住前序的作用就是可以由前序知道下一个根节点是谁,由中序知道该根节点的左右孩子结点是谁?下面直接用例子讲最通俗易懂的了:

例:

前序和中序,构造二叉树

下面还有两个例子,你们可以尝试做一下:

1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。 (1)写出该二叉树的后序序列 (2)画出该二叉树 2、已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树。

②:接着我们来讲讲有中序和后序构造二叉树的案例,其实大致跟前面的前序和中序构造二叉树差不多的,从中序判断出左右结点,后序判断下一个根节点(唯一区别就是后序判定下一个个根节点有点麻烦,我们可以认为从后序判定下一个根节点是从右往左的)。

例:已知某二叉树的中序遍历为F-D-H-G-I-B-E-A-C,后序遍历为F-H-I-G-D-E-B-C-A,请还原这颗二叉树?

总之,做这种画二叉树的题目,要明确我们可以由前序或者后序判断下一个根结点,由中序判断出左右结点就可以了。

二、二叉树遍历

例一、

前序我们都知道“根左右”嘛,先遍历到A,然后左结点B,按道理应该写C,但不能,因为这里的左结点B还有左结点D,F(我们记住一句话,如果遍历左结点的时候,左结点还有左结点,则需要把全部左结点遍历完,再去看右节点),以此类推。

前序遍历
中序遍历

后序我就不画了,你们从尝试着遍历,画一下,后序遍历序列是:FHIGDEBCA

二叉树遍历2
二叉树遍历3

前序遍历:ABDEHCFI

中序遍历:DBHEACIF

后序遍历:DHEBIFCA

一、构造二叉树 ①:在数据结构中,我们一般都会有这样的题目:由(前序和中序)或者(后序跟中序),画出该二叉树,我先说前序和中序的:我们只需要记住前序的作用就是可以由前序知道下一个根节点是谁,由中序知道该根节点的左右孩子结点是谁?下面直接用例子讲最通俗易懂的了: 例: 前序和中序,构造二叉树 下面还有两个例子,你们可以尝试做一下: 1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。 (1)写出该二叉树的后序序列 (2)画出该二叉树 2、已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树。 ②:接着我们来讲讲有中序和后序构造二叉树的案例,其实大致跟前面的前序和中序构造二叉树差不多的,从中序判断出左右结点,后序判断下一个根节点(唯一区别就是后序判定下一个个根节点有点麻烦,我们可以认为从后序判定下一个根节点是从右往左的)。 例:已知某二叉树的中序遍历为F-D-H-G-I-B-E-A-C,后序遍历为F-H-I-G-D-E-B-C-A,请还原这颗二叉树? 总之,做这种画二叉树的题目,要明确我们可以由前序或者后序判断下一个根结点,由中序判断出左右结点就可以了。 二、二叉树遍历 例一、 前序我们都知道“根左右”嘛,先遍历到A,然后左结点B,按道理应该写C,但不能,因为这里的左结点B还有左结点D,F(我们记住一句话,如果遍历左结点的时候,左结点还有左结点,则需要把全部左结点遍历完,再去看右节点),以此类推。 前序遍历 中序遍历 后序我就不画了,你们从尝试着遍历,画一下,后序遍历序列是:FHIGDEBCA 二叉树遍历2 二叉树遍历3 前序遍历:ABDEHCFI 中序遍历:DBHEACIF 后序遍历:DHEBIFCA
经验分享 程序员 微信小程序 职场和发展