📅  最后修改于: 2023-12-03 15:26:04.244000             🧑  作者: Mango
该题目是2017年1月至2月的UGC NET CS考试中的问题32。这个问题涉及到树的遍历和排序问题。
给定一个二叉树,其前序遍历和中序遍历如下所示。请给出其后序遍历。
前序遍历:40 30 35 80 100 中序遍历:30 35 40 80 100
这是一个二叉树遍历的问题。我们需要使用前序遍历和中序遍历来构建二叉树,并通过后序遍历来打印出二叉树节点的值。
为了构建二叉树,我们可以使用以下方法:
我们可以使用以下方法打印出后序遍历:
下面是用Python语言实现的代码:
def build_tree(preorder, inorder):
if inorder:
root_index = inorder.index(preorder.pop(0))
root = Node(inorder[root_index])
root.left = build_tree(preorder, inorder[0:root_index])
root.right = build_tree(preorder, inorder[root_index + 1:])
return root
def postorder_traversal(node):
if not node:
return
postorder_traversal(node.left)
postorder_traversal(node.right)
print(node.value)
preorder = [40, 30, 35, 80, 100]
inorder = [30, 35, 40, 80, 100]
root_node = build_tree(preorder, inorder)
postorder_traversal(root_node)
以上是伪代码,其中的 Node
类需要自行定义一下。
该算法实现了构建二叉树和后序遍历的操作。如果前序遍历和中序遍历都正确,那么输出的后序遍历就是正确的。