对二叉树的遍历,采用递归的方法,最容易实现。
中序遍历:先中序遍历左子树,再访问根节点,最后中序遍历右子树。
前序遍历:先访问根结点,在前序遍历左子树,最后前序遍历右子树。
后序遍历:先后序遍历左子树,在后序遍历右子树,最后访问根结点。
先序就是先遍历根,再遍历左子树,再遍历右子树。例如上图的先序遍历是:ABCDEFGHK。
中序就是先遍历左子树,再遍历根,再右子树。例如上图的中序遍历是:BDCAEHGKF。
后序就是先遍历左子树,再右子树,再根。例如上图的后序遍历是:DCBHKGFEA。
二叉树遍历方式是数据结构的基础知识,作为计算机专业的大学生,我的理解如下:
1、 前序遍历
它的遍历顺序是:先访问根结点,再进入这个根结点的左子树;以上述方式遍历完所有左子树后,再进入它的右子树,以同样的方式遍历右子树中的结点,即根结点→左子树→右子树。下图中1为主根结点,245为左子树,367为右子树;在左子树中,2为根结点,4为左子树,5为右子树;在右子树中,3为根结点,6为左子树,7为右子树。依次将每个树中的根结点、左子树以及右子树分清,只到子树中只剩一个元素为止。综上可知,结果为1→2→4→5→3→6→7。
例子
2、 中序遍历
它的遍历顺序是:先进入根结点的左子树,以同样方式遍历左子树结点,在访问当前的根结点,最后进入根结点的右子树,以同样方式遍历右子树结点,即左子树→根结点→右子树。由前序遍历中分析可知结果为4→2→5→1→6→3→7。
3、 后序遍历
它的遍历顺序是:先进入根结点的左子树,以同样方式遍历左子树结点,再进入根结点的右子树,以同样方式遍历右子树结点,左右子树都遍历完后,才能访问当前根结点,即左子树→右子树→根结点。由前序遍历中分析可知结果为4→5→2→6→7→3→1。
试一试,二叉树例题与解答:
例题
前序遍历:A→B→D→F→G→H→I→E→C。
中序遍历:F→D→H→G→I→B→E→A→C。
后序遍历:F→H→I→G→D→E→B→C→A。
前序遍历顺序:父节点,左子节点,右子结点;
中序遍历顺序:左子节点,父节点,右子结点;
后序遍历顺序:左子结点,右子结点,父节点;
故前序:A,T,B,Z,X,C,Y,P。
中序:Z,B,T,A,C,Y,X,P。
后序:Z,B,T,Y,C,P,X,A。
中序遍历按左子树、根结点、右子树的顺序;后序遍历按左子树、右子树、根结点的顺序。
后序结果中A最后访问,所以A是根结点,结合中序结果可知,BDCE则都在二叉树的左边。后序结果中DECB最后访问B,则B就是A的左子树;中序最先访问B,说明B没有左子树,只有右子树……总之结合中后序遍历的结果,依次递推即可得到如图的答案。 不懂的可以再问我。
原文地址:http://www.qianchusai.com/%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E9%A1%BA%E5%BA%8F.html