📜  数据结构和算法-树遍历

📅  最后修改于: 2021-01-11 10:26:52             🧑  作者: Mango


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

  • 有序遍历
  • 预购遍历
  • 订单遍历

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

有序遍历

在这种遍历方法中,首先访问左子树,然后访问根,然后再访问右子树。我们应该永远记住,每个节点都可能代表一个子树本身。

如果按顺序遍历二叉树,则输出将产生升序排序的键值。

按顺序遍历

我们从A开始,然后按照有序遍历,移至其左子树B。 B也按顺序遍历。一直进行到访问所有节点为止。该树的有序遍历的输出为-

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

算法

Until all nodes are traversed −
Step 1 − Recursively traverse left subtree.
Step 2 − Visit root node.
Step 3 − Recursively traverse right subtree.

预购遍历

在这种遍历方法中,首先访问根节点,然后是左子树,最后是右子树。

预购遍历

我们从A开始,并在进行预遍历之后,首先访问A本身,然后移至其左子树B。 B也经过遍历。一直进行到访问所有节点为止。该树的预遍历的输出将是-

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

算法

Until all nodes are traversed −
Step 1 − Visit root node.
Step 2 − Recursively traverse left subtree.
Step 3 − Recursively traverse right subtree.

订单遍历

在这种遍历方法中,根节点是最后访问的,因此是名称。首先,我们先遍历左侧子树,然后遍历右侧子树,最后遍历根节点。

订单遍历

我们从A开始,然后经过后顺序遍历,首先访问左子树B。 B也遍历后置订单。一直进行到访问所有节点为止。该树的后遍历的输出将是-

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

算法

Until all nodes are traversed −
Step 1 − Recursively traverse left subtree.
Step 2 − Recursively traverse right subtree.
Step 3 − Visit root node.

要检查树遍历的C实现,请单击此处