数据结构中已知前序序列和中序序列,怎么得出后序序列,谢谢回答!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构中已知前序序列和中序序列,怎么得出后序序列,谢谢回答!相关的知识,希望对你有一定的参考价值。
标准的答案!首先要明确前序,中序和后序的遍历顺序:前序:父节点,左子节点,右子节点;
中序:左子节点,父节点,右子节点;
后序:左子节点,右子结点,父节点;
明确之后,首先根据前序遍历,确定整个二叉树的根节点(前序的第一个节点);再通过中序遍历,可以直接根据根节点将整个二叉树分为左右两颗子树。这时再逐步根据前序和中序顺序,不难画出整个二叉树。进而可以写出后序遍历序列了。
例:已知某二叉树先序遍历序列是:ABCDEFH,中序遍历序列是:BDCEAHF,写出后序遍历序列。
由前序可知,该树根节点为A;
由中序及根节点可知,B,D,C,E在根节点的左子树上H,F在根节点的右子树上;
再逐步分析各子树,可得该树为:
A
╱╲
BF
╲╱
CH
╱╲
DE
后序为:DECBHFA 参考技术A 记住各个序列的原理,前序是根左右,中序是左根右,后序是左右根,具体的你找一个树,然后写出它的各个序列,然后知其二,反推画出树,然后写出另一
以上是关于数据结构中已知前序序列和中序序列,怎么得出后序序列,谢谢回答!的主要内容,如果未能解决你的问题,请参考以下文章
已知二叉树的先序序列和中序序列怎么求后序序列?不是基于C++的,要在TC环境下能运行的,各位能人帮帮忙吧
已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)