二叉树遍历方法
前序遍历:根节点->左子树->右子树;
中序遍历:左子树->根节点->右子树;
后序遍历:左子树->右子树->根节点;
层序遍历:若树为空,空操作返回,否则从树得第一次(根节点)逐层遍历。
推导遍历结果
已知一颗二叉树得前序遍历是 ABCDEF,中序遍历为 CBAEDF,这颗二叉树得后序遍历结果是多少?
1.前序遍历中第一个是根节点 A,则在中序遍历中 A之前的CB为A的左子树,EDF为右子树;
2.C、B在前序的顺序为B、C,则B是A的左孩子,C在中序中在前,C是B的孩子,且是左孩子;
3.E、D、F在前序DEF,则D是A的右孩子,后序为EDF,E是D的左孩子,F是D的右孩子;
复原二叉树后,其后序遍历结果:CBEFDA
A是跟节点,其在后序中必定为最后一个;
C是B的左孩子,B是A的左孩子,则后序中为CB;
D是A的右孩子,E、F分别是D的左右孩子,则后序中为EFD。
二叉树的额中序序列是ABCDEFG,后序序列是BDCAFGE,求前序序列。
1.后序中E为根节点,则前序第一个为E;
2.ABCD为根节点的左树,FG为根节点的右树。后序BDCA,则A是E的左孩子,目前前序序列为EA;
3.中序序列ABCD,A在前,则A没有左孩子,BCD是A的右树,后序BDCA,则C是A的右孩子,前序EAC;
4.中序BCD,则BD分别是C的左右孩子,前序EACBD;
5.后序FGE,则G是E的右孩子,F是G的孩子,中序FG,F在前,F为G的左孩子,前序EACBDGF
(F是左、右孩子不影响前序遍历顺序)