本篇文章将为大家介绍如何使用Python从中序和后序序列构建二叉树。
一、问题描述
给定二叉树的中序遍历和后序遍历,要求重建出二叉树。
例如:
中序遍历:[9,3,15,20,7] 后序遍历:[9,15,7,20,3]
我们可以重建出下图所示的二叉树:
3 / 9 20 / 15 7
二、方法介绍
我们可以用递归的方法来构建二叉树。我们可以从后序遍历序列中确定根节点,然后从中序遍历序列中找到根节点的位置,将中序遍历分为左子树和右子树,再递归的构建左子树和右子树。
三、代码实现
接下来我们将展示如何使用Python来实现从中序和后序序列重建二叉树。
1. 定义二叉树节点结构体
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right
2. 从中序和后序遍历序列重建二叉树
def buildTree(inorder: List[int], postorder: List[int]) -> TreeNode: if not inorder or not postorder: return None root_val = postorder[-1] root = TreeNode(root_val) root_index = inorder.index(root_val) root.left = buildTree(inorder[:root_index], postorder[:root_index]) root.right = buildTree(inorder[root_index+1:], postorder[root_index:-1]) return root
四、小结
本文介绍了从中序遍历和后序遍历序列构建二叉树的方法。通过递归算法,我们可以很容易地实现这个功能。这个问题经常在面试中出现,我们建议大家多加练习和思考,熟悉递归思想的运用。