数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历

二叉树遍历有深度遍历和宽度遍历,深度遍历就是指前序遍历,中序遍历,后序遍历,

宽度遍历就是指层次遍历,每一层从上到下,从左到右的遍历。

层次遍历的过程,如下图所示:

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历

前序遍历:根节点 --> 左子树 --> 右子树

中序遍历: 左子树 --> 根节点 --> 右子树

后序遍历: 左子树 --> 右子树 --> 根节点

注意:根节点指一个节点,就一个小圆圈

前序遍历,中序遍历,后序遍历的前,中,后,指的是遍历 根节点 的顺序。

前序遍历:左右

中序遍历:左

后序遍历:左右

以后在我们遍历二叉树时,要时刻牢记这9个字。

例如,我们做前序遍历,心里默念:根左右,根左右,根左右,,,就当是念经------念经法

下面看个栗子:

由字符ABCDEFGH组成的二叉树

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历

下面开始做前序遍历,不断念我们的如来真经:根左右

本次念经需要念三次。

第一次念真经根左右,‘根,呦呵,A不就是根节点吗!写下来:A

接下来是 ‘左’,左子树是下面一坨,是一棵树

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历

还是一棵树,开始第二次念我们的真经 根左右 ,B 是根,找到了,记下来,于是:A --> B 

‘左’是一个叶子节点D,不是树,直接记下来,于是:A --> B -->D

‘右’是一颗树,右子树,对右进行念经,需要再来一次完整的根左右念经

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历

对这个右子树,开始我们的第三次念经:

根,是E,于是A --> B -->D --> E

左 ,是G,于是A --> B -->D --> E -->G

右 ,是H,于是A --> B -->D --> E -->G --> H

第三次根左右念经,我们很顺利,没有碰到树,直接念完(遍历完)

这个右子树,是第二次念经 根左右 的右 ,所以 第二次念经的 右 念完(遍历完),即第二次念经完成

第二次念经完成,是第一次念经的左,也就是 第一次念经的‘左’念完(遍历完)

第一次念经,根左已经完成,接下来是 右 ;右是由 C F 组成的右子树

念真经,根左右,根是C,于是A --> B -->D --> E -->G --> H  -->C 

左 ,没有左,不要理会;接下来是 右,右是F 记下来

于是:A --> B -->D --> E -->G --> H  -->C  --> F

至此,第一次念经的 右 念完,即前序遍历完成。

同样的道理,采用多次念经法,我们可以完成其他两种遍历:

中序遍历:D --> B -->G --> E -->H --> A  -->C  --> F

后序遍历:D --> G -->H --> E -->B --> F  -->C  --> A

这是我学习二叉树遍历时,自创的念经法,我觉着很好用,你们看看还能适应吗?

来总体感觉一下三种遍历的过程:

前序遍历:左右

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历


中序遍历:左

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历


后序遍历:左右

数据结构与算法:python语言解释 之 通俗理解二叉树前序中序后序遍历