二叉树的前序、中序、后序排列经常在面试中出现。总结一下近期学习的经验:
1:首先,需要确定查找先左后右还是先右后左?一般情况下,数据结构的书籍都是确定先左后右。
2:在前序、中序、后序的排列中,始终都是L在R之前,所谓的前中后,是按照根节点的D这个字母在三者中的相对位置决定的。
前序排列:DLR
中序排列:LDR
后序排列:LRD
二叉树的序排列问题:
前序排列时候:根--->左------>右;
先从根节点出发,然后遍历所有的左节点,然后是右节点。二叉树的构成可以看成是由许多小的二叉树合并起来的。所以这个过程应该是递归的。
先从最上边的根节点出发,这个根节点有左子树吗?有 ------>访问该左子树的根节点2------->2有左子树吗?------->有----->访问该左子树3----->3有左子树吗?---->无--------->3有右孩子4吗?--------->有------->访问4--------->访问完这一层后,需要往上一层访问右子树。往上一层的理解就是:结点A有一个左子树和一个右子树,遍历完成了它的左子树了,轮到右子树了。这是一个节节向上的思想。
二叉树的恢复:
从前序遍历中找出根节点。从中序排列中找出被根节点分为两半的二叉树左子树和右子树。