二叉树的遍历一般来说有3种,分别为先序遍历,中序遍历,后序遍历。
在二叉树的三种遍历中,每个节点都会经过3次。
说明如下:对于其中一个节点来说,当指针指向该节点时,第一次访问该节点。
当访问完其左子树时,会返回到该节点。
当访问完其右子树时,会返回到该节点。
而对于三种遍历来说,先序遍历是第一次访问到该节点时,对其值进行输出 (即先访问该节点,再左子树,右子树)
中序遍历是第二次访问到该节点时,对其值进行输出 (即先左子树,再该节点,再右子树)
后序遍历是第三次访问到该节点时,对其值进行输出 (即先左子树,再右子树,再该节点)
所以,无论是先序,中序,后序遍历二叉树,遍历时的搜索路径是相同的,即访问该节点,访问左子树,访问右子树,亦即都是从根节点出发,逆时针沿二叉树外缘移动,对每个节点都经过3次。而三种遍历方式只不过是在这条遍历路径上,每个节点是在第几次访问时进行遍历输出的区别。
理解二叉树递归遍历时,可以按照这样的思路来想,当前是指向那个节点,即当前位于哪一层。当本层代码运行完成后,将会返回到上一层。