三种遍历的命名
根据访问结点操作发生位置命名: ① NLR: 前序遍历 (PreorderTraversal亦称(先序遍历)):根左右 ——访问根结点的操作发生在遍历其左右子树之前。 ② LNR: 中序遍历 (InorderTraversal):左根右 ——访问根结点的操作发生在遍历其左右子树之中(间)。 ③ LRN: 后序遍历 (PostorderTraversal):左右根 ——访问根结点的操作发生在遍历其左右子树之后。 注意:由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。
例子1:
遍历二叉树的执行踪迹
三种递归遍历算法的搜索路线相同(如下图虚线所示)。 具体线路为: 从根结点出发,逆时针沿着二叉树外缘移动,对每个结点均途径三次,最后回到根结点。 2.遍历序列 A / \ B C / / \ D E F 图 ⑴ 中序序列(inorder traversal) 中序遍历二叉树时,对结点的访问次序为中序序列 【例】中序遍历上图所示的二叉树时,得到的中序序列为: D B A E C F ⑵ 先序序列(preorder traversal) 先序遍历二叉树时,对结点的访问次序为先序序列 【例】先序遍历上图所示的二叉树时,得到的先序序列为: A B D C E F ⑶ 后序序列(postorder traversal) 后序遍历二叉树时,对结点的访问次序为后序序列 【例】后序遍历上图所示的二叉树时,得到的后序序列为: D B E F C A ⑷层序遍历(level traversal)二叉树的操作定义为:若二叉树为空,则退出,否则,按照树的结构,从根开始自上而下,自左而右访问每一个结点,从而实现对每一个结点的遍历 【例】层序遍历上图所示的二叉树时,得到的层序序列为: A B C D E F
例2:
例三: