最近学了二叉树的三种遍历方式,即前序遍历,中序遍历,后序遍历三种,仔细思索后,在此简单总结一下。
一.二叉树示意图
假设有一颗二叉树如下:
二.遍历分析
每一颗二叉树由根节点,左子树,右子树三个部分组成,规定先遍历左子树,再遍历右子树,这样一来就有了三种遍历方式,按照遍历根节点的先后顺序来划分,根->左->右方式就是前序遍历,左–>根->右方式就是中序遍历,左–>右->根自然就是后序遍历了。
需要重点理解的是,对二叉树的遍历实际上是一种递归,每种方式都是从根节点出发,按照相应的顺序进行遍历,比如前序遍历,首先访问根节点,即A,然后访问左子树,左子树的根节点为B,因此接下来访问B节点,然后继续访问左子树的左子树,也即是根节点为D的左子树,自然,第三个访问的节点应该是D,然后继续访问左子树,此时第四个左子树根节点为H(当然也只有一个根节点,没有左右子树了),因此第四个访问的节点为H。
然后返回,注意此时根节点为D的子树已经遍历完毕,应该遍历根节点为B的子树的右子树,因此第五个访问的节点为E,访问E节点以后,以A为根节点的二叉树的左子树也已经访问完毕了,应该访问其左子树,按照之前的逻辑,很容易分析出接下来应该依次访问C、F、G三个节点,至此,二叉树遍历完毕,前序遍历结果为ABDHECFG
下面给出三种不同方式遍历上图二叉树的答案,除了访问根节点的顺序不同以外,分析过程大同小异,就不多赘述了。
1. 前根序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。
ABDHECFG
2.中根序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。
HDBEAFCG
3.后根序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。
HDEBFGCA