摘要:题目前序遍历中序遍历后序遍历这些遍历就是根据遍历根节点的顺序而定义的,前序遍历就是优先遍历根节点然后遍历左右子节点,当然左右子节点也是根据这个原则遍历的,那么中后序遍历也一样。
为什么会写这篇文章
学习的时间越来越长总会忘掉一些东西,就比如向量,矩阵,二叉树,邻接表,太多太多东西,不用就都给忘了,今天看了这样一道面试题:总结下来就是根据二叉树的前中序遍历,然后写出后序遍历,清晰的记得当时学习二叉树的时候做这种题是很快的,可是我还真就卡住了,不是说需要做一会儿,是做不出来,看过好多遍使用程序实现DFS(深度优先)BFS(广度优先)的例子,可是让我用笔推断,我还真就脑子瓦特了,所以也记录一下,顺便帮一下也忘记了手工推断的你们回忆一下,你们一定都比我优秀,perfect。
题目:
前序遍历
A D C E F G H B
中序遍历
C D F E G H A B
后序遍历?
这些遍历就是根据遍历根节点的顺序而定义的,前序遍历就是优先遍历根节点然后遍历左右子节点,当然左右子节点也是根据这个原则遍历的,那么中后序遍历也一样。那么我们应该怎么去做呢?其实就是根据前中遍历的结果推断出这颗树。。。
第一步
根据前序遍历原则找出根节点:A 因为优先遍历根节点
根据根节点A和中序遍历划分前中序遍历的左右子树,以中左表示,前序遍历的左右子树,以前左表示:
中左:C D F E G H
中右:B
前左:D C E F G H
前右:B
第二步
根据上面的中左,前左继续划分根节点:D 由于右子树就一个节点,所以就结束了
根据根节点D和中序遍历划分前中序遍历的左右子树
中左:C
中右:F E G H
前左:C
前右:E F G H
第三步
根据上面的中右,前右继续划分根节点:E 由于左子树就一个节点,所以就结束了
根据根节点E和中序遍历划分前中序遍历的左右子树
中左:F
中右:G H
前左:F
前右:G H
第四步
根据上面的中右,前右继续划分根节点:G 由于左子树就一个节点,所以就结束了
根据根节点G和中序遍历划分前中序遍历的左右子树
中左:
中右:H
前左:
前右:H
终于构建出来这颗树了,接下来根据后序遍历原则去写:
后序遍历结果亮相:
C F H G E D B A
只有多学习才能变得更强,还是那句话:
坚持一件事,对自己。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43481.html
摘要:像刚才的这幅图,就是二叉搜索树。而我们本文要学习的内容,就是如何写一个二叉搜索树。但在二叉搜索树中,我们把节点成为键,这是术语。前端路漫漫,且行且歌的前端乐园原文链接寒假前端学习学习数据结构与算法四二叉搜索树 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据...
摘要:代码实现如下二叉树的创建与销毁二叉树的创建问题通过前序遍历的数组给定一串字符串,代表的是空树,其他的都是节点。 ⭐️本篇博客我要来和大家一起聊一聊数据结构中的二...
摘要:当集合为空时,称该二叉树为空二叉树。也就是说,如果一个二叉树的层数为,且结点总数是,则它就是满二叉树。完全二叉树完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。 ...
阅读 4015·2023-04-26 02:13
阅读 2258·2021-11-08 13:13
阅读 2744·2021-10-11 10:59
阅读 1742·2021-09-03 00:23
阅读 1314·2019-08-30 15:53
阅读 2292·2019-08-28 18:22
阅读 3061·2019-08-26 10:45
阅读 743·2019-08-23 17:58