从右到左遍历一棵树

时间:2015-12-18 03:05:02

标签: algorithm tree

我正在阅读Brassard和Bratley撰写的“算法基础”一书,有关树遍历的部分中有一条声明说:

  

预购,后序和顺序遍历从左侧探索树   对。三种相应的技术从右侧探索树   离开

从右到左穿越是什么意思?我的猜测是,他们的意思是从右到左的前序遍历相当于一个从左到右的常规后序遍历?从左到右和从右到左的顺序是完全相同的算法?

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解所有问题,所以我只回答一个问题。

  

从右到左遍历是什么意思?

所有这些树遍历方法都需要递归。在递归中,您需要对元素执行某些操作并遍历左/右树。你有*L*R*。您可以插入do something而不是*之一。并将获得你的pre / in / pos - order。

答案 1 :(得分:0)

这是一个简单的树,一个有两个叶子的节点:

        Mom
         ^
        / \
       /   \
      /     \
    Sally   Bob

由于有三个标签,因此有六个(三个因子)可能的订单。其中三个对应于从左到右的遍历,其中SallyBob之前命名:

  • 妈妈,莎莉,鲍勃←预购。妈妈在孩子面前。
  • 莎莉,鲍勃,妈妈←后序。妈妈在追赶孩子们。
  • 莎莉,妈妈,鲍勃←inorder。妈妈在孩子们之间。

如果我们以相反的顺序访问孩子(Bob首先),那么我们将从右到左( RTL )遍历。 (鲍勃在右边,对吗?)同样,有三种可能性:

  • 妈妈,鲍勃,莎莉←RTL预购。妈妈在孩子面前。
  • Bob,Sally,Mom←RTL postorder。妈妈在追赶孩子们。
  • 鲍勃,妈妈,莎莉←RTL inorder。妈妈在孩子们之间。

以上所有内容都是深度优先遍历。这意味着如果我们访问子节点(例如,Sally),我们将继续遍历该节点,然后继续下一步要遍历的任何节点。