今天我们们先来看一道例题:
A. 树的遍历
这道题目一开始我不懂什么是前序、中序、后序和层序,也不懂他们的遍历方式,于是我看到了这篇博客:(转)【数据结构】理解二叉树的三种遍历--前序、中序、后序 +层序(简明易懂)
经过学习后,我来讲讲对这个知识的理解:
树的前序、中序、后序
对于这三个树的遍历方式,其实根据名称就可以写出一些简写:
前序:根左右 中序:左根右 后序:左右根
也就是说名称的方位就是根的方位,而左右依次按序。我依次讲解:
前序
先找根,再找左,左边没有了找右边:
每一个颜色代表每一层(不是树的层)的根左右的查找,这样可以清晰的表现出前序排列的根左右的关系,首先找到根1,然后查找根1的左边的节点,以左边的节点作为根2,再查找根2左边的节点,而这个节点下面已经没有节点,那就找到根2的右边那个节点,这里展示了对于根2的根左右顺序的查找,然后左边查找完毕后根据根1的根左右顺序,查找根1的右边节点,后面同理。
中序
这里补充一下,根的顺序也是此根被查找到的顺序,这里是左根右,也就是最先找到左的位置,那节点1的左边是节点2,节点2的左边是节点4,也是最后一个节点,那么就把4查找到了,找到了最左的,那依次往回找到最左的根,也就是节点2,然后查找到节点2这个根的右边,也就是节点5,至此节点1的左边全部查找完毕,然后根据左根右,左边查找完毕,那就查找根1(也就是当前的节点1),然后查找节点1的右边,右边和左边同理。
后序
根据后序的左右根的规则,我们先找到最左边的节点,也就是节点4,然后再找到节点4的根的右边的节点(有点绕,理解一下),也就是节点5,然后查找前面两个节点的根节点,也就是2,然后以节点2作为1的左节点,再查找节点1的右边,也就是节点3,此时节点3也要根据左右根的规则,先找出左节点,也就是节点6,然后找出右节点,也就是节点7,然后再查找根,也就是节点3,最后再查找节点2和3的根,也就是节点1。
我相信到这里大家都可以理解了吧??不理解的同学可以画一颗树,然后脑子里时刻记住三个顺序的查找规则,自己徒手画一次,我相信你们一定可以理解的!!!
层序
为什么我把层序单独拿出来呢?因为层序没有根、左、右这三个方位的查找顺序规则,而是按照树的层的顺序来查找的,下面我们根据上面的方法再画一下:
其实层序的理解还是很简单的,只要按照层的顺序优先,节点从左到右的顺序其次,就可以成功查找了!!