二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点仅被访问一次
前序遍历
若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树。
结果是:ABDGHCEIF
中序遍历:
若树为空,则空操作返回,否则从根节点开始(注意并不是先访问根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树
结果是:GDHBAEICF
后序遍历:
若树为空,则空操作返回,否则从左到右先叶子后节点的方式遍历访问左右子树,最后是访问根节点。
结果是:GHDBIEFCA
层序遍历
若树为空,则空操作返回,否则从树的第一层,也就是根节点开始访问,从上而下逐层遍历,同一层中,按从左到右对节点逐个访问。
结果是:ABCDEFGHI
有时候会碰到一种题,推导遍历结果
例如:已知一棵二叉树前序遍历为ABCDEF,中序遍历为CBAEDF,后序遍历是多少?
解析:
1.前序遍历为ABCDEF,所以根节点为A,再由中序遍历CBAEDF,可推导CB为左子树,EDF为右子树
2.然后前序先打印B然后C,所以B应该是A的左孩子,C不确定,但中序C在B之前,则推断出C是B的左孩子
3.前序为DEF,所以D是A的右孩子,再加上中序EDF,可以确定,E是D的左孩子,F是D的右孩子
结果他的后序遍历就很明显了,CBEFDA
拓展一下,如果要确定一颗二叉树,前序后序是不能直接确定的,必须要知道中序。