二叉树如何根据前两种遍历求第三种遍历

这种活计刷个题就明白了,不过在刷题之前推荐读者先把二叉树遍历的概念大致浏览一下,请看该博客:二叉树遍历

接下来小二就上热气腾腾的题啦,客官请慢用~


先序+中序---->后序

对某二叉树进行先序遍历的结果是ABDEFC,中序遍历的结果是DBFEAC,则后序遍历的结果是:

解析:

先序:根->左->右、中序:左->根->右,后序:左->右->根。

这种题的思路就是,先找到根,然后找左右子树,以此类推~

Step1:先序遍历肯定是先遍历根节点啦。所以A就是根节点;那么在中序遍历里面,根节点A的左边的就是它的左子树,右边的就是它的右子树

Step2:对DBFE这个左子树进行判断,在先序遍历里面可以看出,B就是该子树的根节点啦,从中序遍历可以看出D是B的左子树,FE是B的右子树

Step3:对FE这个子树进行判断,在先序遍历里面可以看出E是根节点,从中序遍历可以看出F是左子树

Step4:后序遍历就是左、右、根,DFEBCA

小试牛刀:.若某二叉树的先序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()

解析:

Step1

Step2

Step3

Step4    gdbehfca

plus: 其实在写遍历的结果的时候,可以比较优先级,比如说后序遍历,在脑子里一定要切记:左右根,左结点比右节点优先级高,右节点比根节点优先级高。这样就不容易出错了。

后序+中序---->先序

已知中序CBDAEF,后序CDBFEA,先序:

解析:

中序:左->根->右,后序:左->右->根

Step1:从后序遍历可以看出,A一定是根节点,从中序遍历可以看出CBD是左子树,EF是右子树

Step2:从后序遍历可以看出B是左子树的根节点,E是右子树的根节点

Step3:先序遍历为根->左->右,即:ABCDEF

后序+先序---->中序

哈哈哈哈哈,这个没办法得到唯一的啦。不信你看下面的例子。这几个后序,先序都一样,但是中序不同哦~

~~~END~~~

发布了222 篇原创文章 · 获赞 152 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/keneyr/article/details/103906084