数据结构先序中序后序规则 数据结构中已知前序序列和中序序列,怎么得出后序序列?
数据结构中已知前序序列和中序序列,怎么得出后序序列?
首先要明确前序、中序、后序的遍历顺序:前序:父节点、左子节点、右子节点;中序:左子节点、父节点、右子节点;后序:左子节点、右子节点、父节点;首先根据前序遍历,确定整个二叉树的根节点(前序的第一个节点),然后通过中间序遍历,将整个二叉树按根节点直接划分为两个子树。
此时,按照预序和中间序一步一步地绘制整个二叉树并不困难。然后我们可以编写后序遍历序列。例如:已知二叉树的前序遍历序列为bc D E F H,中序遍历序列为bd C E a H F,写后序遍历序列。根据前序,树的根节点是a;根据前序和根节点,B、D、C、e在根节点的左子树上,h、f在根节点的右子树上;通过逐步分析每个子树,树是a/╲B f/╲C h/╲D e,先遍历当前节点,然后遍历左子树。然后遍历右子树。所以您需要记录右子树的根节点,并等待它被取出以遍历右子树。
如果堆栈不为空或节点指针不为空,则进入循环
如果当前节点不为空,则先将右侧子节点放入堆栈(无论右侧节点是否为空),然后输出当前节点。赋值节点指针是左子节点。
如果当前节点为空。取出堆栈中的节点。
我懒得在后面写。有时间就写。
不建议业主问这种问题,但愿意回答的人不多。我想你可以问:哪里可以得到带注释的XXX源代码
一般来说,可以先还原二叉树,然后遍历后序序列得到后序序列。恢复过程如下:首先,前序序列中的第一个是根。在得到中间顺序后,中间顺序可以分为三部分:左子树的中间顺序,根,右子树的中间顺序,然后左子树的中间顺序,中间顺序和右子树的中间顺序返回到前顺序。在这些子树的前序序列中,子树的根仍然位于第一位。它再次回到子树的中间顺序进行剪切,直到所有子树只有一个节点
找到根节点(通过post顺序),然后将中间顺序序列分为左右两段子树,然后递归地进行分割,分割时可以使用左右两段子树的节点数用中间阶确定后序序列Dbeca
1中每段的节点数。最后一个节点必须是根节点,在本例中是a
2。中间顺序对应的根是a,所以a是根,BD是左子树,CE是右子树
3。左子树中有两个节点,右子树中有两个节点,因为后一顺序遍历是先左后右,所以后一顺序被分成两段,左dB,右EC
4。因此,左子树的根被确定为B,右子树的根被确定为C
5,按顺序,左子树部分为BD(B是根),右子树部分为D,左子树部分为C,右子树部分为e
,所以前序为ABCDE
数据结构先序中序后序规则 前序中序后序遍历例题 前序中序后序遍历算法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。