首页 > 试题广场 >

其后序遍历序列为:

[单选题]
已知一棵二叉树的先序和中序遍历序列如下:先序:A、B、C、D、E、F、G、H、I,J中序:C、B、A、E、F、D、I、H、J、G其后序遍历序列为:
  • C、B、D、E、A、G、I、H、J、F
  • C、B、D、A、E、G、I、H、J、F
  • C、E、D、B、I、J、H、G、F、A
  • C、E、D、B、I、H、J、G、F、A
  • C、B、F、E、I、J、H、G、D、A
  • C、B、F、E、I、H、J、G、D、A
两个方法:1.把整个树完全构造出来(比较耗时),2. 通过一部分序列排除一部分的选项,然后对比剩下的选项,构造剩余子树,从而选出正确答案。
方法1:完全推导出整个树

方法2:排除法,由先序序列中可以得出,树的根为A,所以排除A,B。而后由中序遍历可知树的左子树为C、B从而排除选项C,D。最后只剩下E,F两个选项。E,F两个选项差异在I,J,H和I,H,J,而后中序这三个元素也为:I,H,J,而结合先序和中序可以得出H,I,J为G的左子树中的元素,而一个树,中序和后序相等的情况, 只有这种情况: 
但这和先序对不上,所以F排除,最后选E.
发表于 2018-11-24 00:26:30 回复(0)
发表于 2016-07-14 22:01:54 回复(7)
先序,中序,后序,已知中序和先序或者中序和后序两种遍历结果,就可以逆向推导出整颗树
1.由先序,知A是根
2.由中序,知B、C为A左子树,D、E、F、G、H、I、J为A右子树
3.由先序,知B为A左子树根
4.由后序,知C为B左子树
5.由先序,知D为A右子树根
6.由中序,知E、F为D左子树,G、H、I、J位D右子树
7.由先序,知E为D左子树根
8.由后序,知F为E左子树
9.由先序,知G为D右子树根
10.由中序,知H、I、J为G左子树
11.由先序,知H为G左子树根
12.由中序,知I为H左子树,J为H右子树
13.树推导构造完毕

编辑于 2017-08-18 13:20:51 回复(4)
选择E。原则,先序:根,左树,右树。中序:左树,根,右树。后序:左树,右树,根。然后是个递归过程。
发表于 2016-05-10 21:54:23 回复(1)
一句话的事:
根据前序找到相对父节点;
根据中序划分该节点的左孩子和右孩子;
再结合前序和中序顺序具体划分孩子属于左还是右节点.
发表于 2020-01-26 20:33:36 回复(0)
选E
发表于 2016-05-10 19:12:00 回复(0)
将序列拆分为几个子序列,拆分的依据是两个序列中子序列的相对位置的变化情况,确定框架,然后在子序列中确定子树,然后组合在一起。抽象(捆绑)与具体。
发表于 2023-11-08 11:35:18 回复(0)

不知道怎么上图


编辑于 2019-04-10 13:34:52 回复(0)
发表于 2018-05-05 09:26:57 回复(2)
        A
      /   \
     B     D
   /     /   \
  C     E     G
         \   /
          F H
           / \
          I   J
编辑于 2017-11-12 14:48:09 回复(0)
敢问这一题有木有简单一点的方法,如果直接把二叉树构造出来肯定可行,但是比较费时间,如果有快速方法,请指教!!
发表于 2017-08-10 20:44:42 回复(1)

图片说明

请问这样的树错在哪里??

发表于 2017-04-26 17:09:57 回复(2)