三个月算法进阶--day49
目录
递归建树
leetcode剑指offer第7题重建二叉树
前序遍历用于确定根节点,中序遍历用于划分左右子树
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
self.preorder = preorder
self.tmp = {inorder[i]: i for i in range(len(inorder)) }
return self.recur(0, 0, len(inorder) - 1)
def recur(self, preroot, left, right):
if left > right:
return
index = self.tmp[self.preorder[preroot]]
root = TreeNode(self.preorder[preroot])
root.left = self.recur(preroot + 1, left, index - 1)
root.right = self.recur(preroot + index - left + 1, index + 1, right)
return root