题目:
给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。
数据范围:n ≤ 2000,节点的值 −10000≤ val ≤10000
思路:
1、前序遍历首个元素是根节点,中序遍历由根节点分隔左右节点,前序遍历的节点总数和中序遍历一样,节点值也一样;
2、根据输入的前序遍历得到根节点,然后在输入的中序遍历中找到左节点和右节点,即可得到树结构。
def reConstructBinaryTree(self, preOrder, vinOrder):
if (
0 <= len(preOrder) <= 2000
and max(preOrder) <= 10000
and min(preOrder) >= -10000
):
root_data = TreeNode(preOrder[0])
num = vinOrder.index(preOrder[0])
root_data.left = self.reConstructBinaryTree(
preOrder[1 : 1 + num], vinOrder[:num]
)
root_data.right = self.reConstructBinaryTree(
preOrder[num + 1 :], vinOrder[num + 1 :]
)
return root_data
该文章描述了一个算法问题,即给定一个二叉树的前序和中序遍历结果,如何重建这个二叉树。方法是首先找到根节点,然后在中序遍历中分割左右子树,递归地构建左右子树直至所有节点都被处理。
77

被折叠的 条评论
为什么被折叠?



