二叉树遍历经典例面试真题详解

167 阅读2分钟

作者:老九—技术大黍

社交:知乎

公众号:老九学堂(新人有惊喜)

特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权

问题描述

已知一棵二叉树的前序遍历序列为ABCDEF,中序遍历序列为CBAEDF,请问这棵二叉树的后序遍历结果是多少?

问题分析及解答

三种遍历都是从根结点开始,前序遍历是先打印再递归左和右。所以前序遍历序列为ABCDEF,第一个字母A被打印出来,说明A是根结点的数据。 再由中序遍历序列是CBAEDF可以知道,C和B是A的左子树结点,E、D、F是A的右子树结点:

image-20210324155250150.png

然后我们看前序中的C和B,是先打印B后打印C,所以B应该是A的左孩子,C就只能是B的孩子(此时左右还未知)。

再看中序序列是CBAEDF,C在B的前面打印,说明C是B的左孩子(否则就应该在B的后面打印):

image-20210324155459561.png

接下来看前序中的E、D、F,他们的顺序是ABCDEF,这就意味着D是A结点的右孩子,E和F是D的子孙(注意:他们中有一个不一定是孩子,还有可能是孙子)。

最后看中序序列是CBAEDF,由于E在D的前面,F在后面,所以可以确定E是D的左孩子,F是D的右孩子:

image-20210324155555845.png

因此,这棵二叉树的后续遍历结果是:CBEFDA

最后

记得给大黍❤️关注+点赞+收藏+评论+转发❤️

作者:老九学堂—技术大黍

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。