📅  最后修改于: 2023-12-03 15:22:01.742000             🧑  作者: Mango
在树的遍历中,人们通常使用三种遍历方式,即前序遍历、中序遍历和后序遍历。前序遍历意味着每当我们遇到一个节点时,首先访问这个节点并打印数据,然后递归地遍历它的左子树,最后递归地遍历它的右子树。中序遍历意味着每当我们遇到一个节点时,首先递归地遍历它的左子树,然后访问这个节点并打印数据,最后递归地遍历它的右子树。后序遍历意味着每当我们遇到一个节点时,首先递归地遍历它的左子树,然后递归地遍历它的右子树,最后访问该节点并打印数据。
这篇文章介绍了如何从给定的 Inorder 和 Preorder 遍历打印 Postorder 遍历。
我们可以通过以下步骤来打印 Postorder 遍历:
其中,步骤1到步骤4是递归的。当我们处理完整棵树时,即可得到 Postorder 遍历序列。
下面是用 Python 语言实现该算法的代码示例:
def print_post_order(in_order, pre_order):
if not in_order or not pre_order:
return
root = pre_order[0]
root_index = in_order.index(root)
print_post_order(in_order[:root_index], pre_order[1:root_index+1])
print_post_order(in_order[root_index+1:], pre_order[root_index+1:])
print(root, end=' ')
这段代码中的 print_post_order
函数从 Inorder 和 Preorder 遍历打印 Postorder 遍历。如果 Inorder 和 Preorder 为空,则返回。否则,通过 Preorder 中的第一个节点选取根节点,并在 Inorder 中查找该根节点的位置和左右子树。然后,我们递归地处理在该节点左侧和右侧的 Inorder,以及在 Preorder 中与这些 Inorder 中的子树相对应的子序列。最后,我们输出当前节点的数据,即可得到 Postorder 遍历序列。