二叉树的认识(1.二叉树的三种遍历)

雨下,听风 倔强青铜 2022-08-16 16:43:17
加精

二叉树的认识(1.二叉树的三种遍历)

先来一个解暑红包

https://bbs.csdn.net/topics/607736237红包来也

以上是二叉树

1.前序遍历
对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。(口诀:根左右)
以上图为例:
过程如下:
(1):输出 A,接着左孩子;
(2):输出 B,接着右孩子;
(3):输出 C,左孩子为空,再接着右孩子,右孩子为空,结束。
2.中序遍历
对于当前结点,先输出它的左孩子,然后输出该结点,最后输出它的右孩子。(口诀:左根右)
以上图为例:
(1):A–>B,B 的左孩子为空,输出 B,接着右孩子为空,此时A的左子树全部输出;
(2):输出根结节A;
(3) :接着右孩子A–>C,C 的左孩子为空,输出 C,接着右孩子为空,此时A的右子树全部输出,结束。
3.后序遍历
对于当前结点,先输出它的左孩子,然后输出它的右孩子,最后输出该结点。(口诀:左右根)
依旧以上图为例:
(1):A–>B,B的左孩子为空,再接着右孩子,右孩子为空,则输出B,此时A的左子树全部输出;
(2):B–>C,C的左孩子为空,再接着右孩子,右孩子为空,则输出C,此时A的右子树全部输出;
(3):C–>A,输出。

-------------------------------------------------------------------------------------------------------------------------------------------------------
4.根据前序遍历中序遍历推导树的结构
已知:
前序遍历: GDAFEMHZ
中序遍历: ADEFGHMZ
后序遍历
首先,要先画出这棵二叉树,再进行后序遍历的求解。怎么画呢?根据上面说的,我们一步一步来。
1.先看前序遍历,前序遍历第一个一定是根节点,那么我们可以知道,这棵树的根节点是G,接着,我们看中序遍历中,根节点一定是在中间访问的,那么既然知道了G是根节点,则在中序遍历中找到G的位置,G的左边(ADEF)一定就是这棵树的左子树,G的右边(HMZ)就是这棵树的右子树了。
如图:

2.我们根据第一步的分析,大致应该知道左子树节点有:ADEF,右子树的节点有:HMZ。同时,这个也分别是左子树和右子树的中序遍历的序列。
见下图:

3.在前序遍历遍历完根节点后,接着执行前序遍历左子树,注意,是前序遍历,什么意思?就是把左子树当成一棵独立的树,执行前序遍历,同样先输出左子树的,由此可以得到,左子树的根是D,第2步我们已经知道左子树是ADEF了,那么在这一步得到左子树的根是D。

见下图:

4.从第2步得到的中序遍历的节点序列中,找到D,发现D左边只有一个A,说明D的左子树只有一个叶子节点,D的右边呢?我们可以得到D的右子树有EF,再看前序遍历的序列,发现F在前,也就是说,F是先前序遍历访问的;再看中序遍历的序列,发现E在前,也就是说,E是中序遍历访问的,则得到E是F的左子树,只有一个叶子节点。
5.到这里,我们可以得到这棵树的根节点和左子树的具体结构了。

如下图:

 6.接着看右子树,在第2步的右子树中序遍历序列中,右子树是HMZ三个节点,那么先看前序遍历的序列,先出现的是M,那么M就是右子树的根节点。刚好,HZ在M的左右,分别是它的左子树和右子树,因此,右子树的结构就出来了:

 

7.到这里,我们可以得到整棵树的结构:

 故答案为:AFEDHZMG

-------------------------------------------------------------------------------------------------------------------------------------------------------

 

5.题目拓展:

1.下图所示二叉树的中序遍列是( )。

A.DHEBAFIJCG

B.DHEBAFJICG

C.DBHEAFCJIG

D.DBHEAFJICG

-------------------------------------------------------------------------------------------------------------------------------------------------------

2.已知一棵二叉树的前序遍历为ABDCEF,中序遍历为BDAECF,求后序遍历。

答案下篇文章揭晓

-------------------------------------------------------------------------------------------------------------------------------------------------------

 https://bbs.csdn.net/topics/607736237戳这里领红包
ps:感谢@2345VOR大佬的细心指点!

 

 

...全文
36 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
不喝水的杰 2022-08-25
  • 打赏
  • 举报
回复 1

博主,数学不怎么好,算法能学号吗??

雨下,听风 倔强青铜 2022-08-25
  • 举报
回复
@不喝水的杰 加油啊,大佬,你可以的

30,779

社区成员

发帖
与我相关
我的任务
社区描述
鸿蒙Next技术问题交流和学习资源共享中心
vue.js前端harmonyos 个人社区
社区管理员
  • 言程序plus
  • 小   明
  • 叶落秋白
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

web全栈技术交流中心

试试用AI创作助手写篇文章吧