遍历结果推导二叉树详细解析
有时候我们会碰到这种题目,给定一棵二叉树的前序遍历和中序遍历,求其后序遍历,让你编程实现该功能,这个原理其实并不是很复杂,但是参考很多人的文章,写的零零散散,并没有把代码剖析的很详细,所以把相关的资料和自己的理解整理于此.
对于这样的题目,我们首先得了解前序遍历和中序遍历的原理。对于三种遍历而言,前序遍历是先打印根节点再递归调用左子树和右子树,中序是左子树到跟再到右子树,后序是左子树到右子树再到根节点。
知道了原理,那么对于题目一颗二叉树的前序遍历为ABCDEF,中序遍历为CBAEDF,我们可以容易的看出第一个字母是A被打印出来,所以A为根结点.又中序为CBAEDF,所以CB为A的左子树结点,EDF是A的右子树的结点。
再看先序:ABCDEF,打印A之后接着打印B,所以B是A的左孩子。再看中序:CBAEDF,C于B之前打印,由中序遍历的性质可以知道C是B的左子树.