数据结构和 算法 - 树遍历

遍历是一个访问树的所有节点的过程,也可以打印它们的值.因为所有节点都是通过边(链接)连接的,所以我们总是从根(头)节点开始.也就是说,我们不能随机访问树中的节点.我们使用三种方式遍历树 :

  • 按顺序遍历

  • 预订遍历

  • 订购后遍历

通常,我们遍历树以搜索或定位给定树中的项或键或打印它包含的所有值.

按顺序遍历

在此遍历方法中,左子树首先访问,然后访问根,然后访问右侧子树.我们应该永远记住,每个节点都可以代表一个子树.

如果遍历二进制树按顺序,输出将生成一个排序的键值.升序.

In Order Traversal

我们从开始A ,并且在按顺序遍历之后,我们移动到其左子树 B . B 也按顺序遍历.该过程一直持续到访问所有节点.此树的顺序遍历输出为 :

D →  B →  E →  A →  F →  C →  G

算法

 
直到所有节点都遍历 :   : 递归遍历左子树.  : 访问根节点.  : 递归遍历右子树.


预订遍历

在此遍历方法中,首先访问根节点,然后访问左子树和最后是正确的子树.

Pre Order Traversal

我们从 A ,并且在预订遍历之后,我们首先访问 A 本身,然后移到其左子树 B . B 也是预先遍历的.该过程一直持续到访问所有节点.此树的预先遍历的输出将为 :

A →  B →  D →  E →  C →  F →  G

算法

 
直到所有节点都遍历 :   : 访问根节点.  : 递归遍历左子树.  : 递归遍历右子树.


订单后遍历

在此遍历方法中,最后访问根节点,因此命名.首先我们遍历左子树,然后是右子树,最后遍历根节点.

Post Order Traversal

我们从 A 开始,在订单后遍历之后,我们首先访问左子树 B . B 也会在订购后遍历.该过程一直持续到访问所有节点.此树的后序遍历输出为 :

D →  E →  B →  F →  G →  C →  A

算法

 
直到所有节点都遍历 :   : 递归遍历左子树.  : 递归遍历右子树.  : 访问根节点.