前言
二叉树的遍历一直是一个令人头疼的问题,笔者将在本文中为大家介绍一种十分实用的方法——标点法,帮助大家更好地掌握二叉树的遍历。
常规方法
给出如下二叉树:
正常我们进行前序遍历的顺序是根,左子树,右子树。
如果按照平常的方法,先是根节点A,然后进入以B为根节点的左子树,再进入以D为根节点的左子树......那么我们将会花费较长的时间才能完成对于这颗二叉树的前序遍历,特别是对于一些节点较多的二叉树,更加会增长我们进行前序遍历的时间。
读者们可以先用传统方法求出这颗二叉树的前序遍历结果。
相信大家对这棵二叉树前序遍历最终得到的结果都是:ABDGHECFIO
标点法
前序遍历
对于前序遍历:第一步先在每个节点的左侧标记一个点
第二步,用一根线从根节点的左侧开始沿着树的枝干(图中的白色线条)依次连接所有绿点
那么,按照绿点连接次序对应的节点顺序其实就是前序遍历的结果(如下图):ABDGHECFIO
你没看错,只需两步就可以快速得到前序遍历的结果!
中序遍历
对于中序遍历,第一步也是在每个节点的下方标记一个点
第二步,也是从根节点的左侧开始,沿着树的枝干(白色线条)依次连接所有红点
那么,按照红点连接次序对应的节点顺序其实就是中序遍历的结果:GDHBEAFICO
后序遍历
后序遍历的方式也一样,第一步,先在每个节点的右侧标点
第二步,从根节点开始,沿着树的枝干依次连接所有蓝点
那么,蓝点的连接次序就是后序遍历的结果:GHDEBIFOCA
怎么样?利用这种方法就能快速地遍历二叉树。你学到了吗?
方法总结
笔者认为这种方法主要有两个优势:第一,使用这个方法的时候不用考虑二叉树的不同遍历的规则,只需标点连线就可以得到对应遍历结果;第二,这个方法熟练之后,求二叉树的遍历序列十分快捷,明显比传统方法更快。
但是,也有一些小缺点,比如,对于一些刚接触二叉树这部分内容的读者,如果还没完全掌握传统方式求解二叉树的遍历,就使用这种方法,那么可能会导致这类读者对二叉树遍历的一些相关性质掌握不到位。
所有这个方法更推荐已经熟练掌握传统方式求解二叉树遍历问题的读者。