预订遍历是否可能与订单后遍历的顺序相同?

时间:2013-04-07 07:25:39

标签: graph-theory tree-traversal preorder postorder

如果T是具有多个节点的有序树。是否有可能T的预先遍历以与T的后序遍历相同的顺序访问节点? 如果“是”,请举个例子。如果“不”,请解释为什么不能发生?

2 个答案:

答案 0 :(得分:1)

除非我遗漏了一些痛苦明显的东西,否则答案是否定的。有序树> 1个节点(例如,2个节点)将如下所示。

    A    
 B                     

    A
        C

订单后遍历以左右根顺序访问节点,并按照从左 - 右 - 右的顺序预先访问节点。为了让它们产生相同的输出,“left”必须等于“root”,这是没有意义的。通过上面的例子,预订将分别产生AB或AC,并且下订单将产生BA和CA.

答案 1 :(得分:1)

在一般情况下,树的叶子是唯一的,因此,如果您正在进行预订或后序遍历,那么它应该以相反的方式出现。

但是,我可以看到两种情况,其中前后遍历是相同的:单身和重复元素。

使用单身人士,你只有一个节点,所以如果你在寻找零叶之前或之后访问它都没关系。

如果您的树中有重复元素,该怎么办?如果插入策略是接受任何大于或等于根节点的元素,那么它们将显示为右侧的退化树:

 A
  \
   A
    \
     A
      \
       A

如果它小于或等于根节点,你仍然有一个退化树,但是在左边。

现在,如果您的插入策略是丢弃重复元素,那么您将留下单例大小写,它仍然具有前后顺序遍历,从而产生相同的元素。