楚江_wog1st 2022-12-31 16:50 采纳率: 50%
浏览 319

二叉树遍历中前序序列、中序序列和后序序列之间的关系相关的问题

大伙都知道二叉树的遍历是四种,先序遍历,中序遍历,后序遍历和层次遍历。那么问题来了:
为什么说前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序?
既然前序序列和中序序列的本质相当于入栈出栈了,那么后序序列和中序序列是否也有差不多的关系呢?前序序列和后序序列是否有什么关系呢?
题主知道二叉树遍历的非递归模式,也就是借助栈或者是队列进行判空循环的操作,但是前序遍历和中序遍历的非递归模式也只是visit()函数在不一样的位置罢了,本质上的函数还是相同的。

  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-31 17:09
    关注

    关于前序序列和中序序列的关系,前序遍历的顺序是:根节点、左子树、右子树。中序遍历的顺序是:左子树、根节点、右子树。所以如果把前序遍历的序列看成一个栈,并按照前序遍历的顺序将节点压入栈中,那么在遍历完左子树后,根节点就会位于栈顶,而在中序遍历中,根节点是在遍历完左子树后才会访问的。所以可以按照中序遍历的顺序将节点从栈中弹出,从而得到一个和中序遍历相同的序列。这就是为什么说前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序的原因。

    至于后序序列和中序序列的关系,后序遍历的顺序是:左子树、右子树、根节点。如果把后序遍历的序列看成一个栈,并按照后序遍历的顺序将节点压入栈中,那么在遍历完左子树后,可以看到,根节点位于栈底,而在中序遍历中,根节点是在遍历完左子树和右子树之后才会访问的。所以可以按照中序遍历的顺序将节点从栈中弹出,从而得到一个和中序遍历相同的序列。

    至于前序序列和后序序列的关系,由于前序序列的顺序是:根节点、左子树、右子树,而后序序列的顺序是:左子树、右子树、根节点,所以前序序列和后序序列没有直接的关系。但是可以通过中序序列来建立前序序列和后序序列之间的关系。可以先根据前序序列和中序序列建立一颗二叉树,然后再按照树的前序遍历顺序遍历整棵树,得到的序列就是后序序列。这是因为,在二叉树的前序遍历中,根节点是最后一个被访问的,而在二叉树的后序遍历中,根节点是第一个被访问的。
    仅供参考,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月31日

悬赏问题

  • ¥15 第一行输入n,第二行输入a b c输出的字符向后平移n个位置,当移动到z时,重新返回a开始
  • ¥15 为什么跑这个代码,文件显示不在呀
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题