题目
根据一棵树的前序遍历与中序遍历构造二叉树。
思路
由前序遍历, 可以知道根节点;根据根节点,可以把中序遍历分为左、右两颗子树。
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:node_index= {val : index for index, val in enumerate(inorder)}def helper(left, right):if left > right: returnval = preorder.pop(0)index = node_index[val]root = TreeNode(val)root.left = helper(left, index - 1)root.right = helper(index + 1, right)return rootreturn helper(0, len(inorder) - 1)
