给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
if not preorder:
return
root_val=preorder[0]
root=TreeNode(root_val)
sep_idx=inorder.index(root_val)
inleft=inorder[:sep_idx]
preleft=preorder[1:sep_idx+1]
inright=inorder[sep_idx+1:]
preright=preorder[sep_idx+1:]
root.left=self.buildTree(preleft,inleft)
root.right=self.buildTree(preright,inright)
return root
这里主要是需要想到递归的办法,似乎也没有很难哈哈