二叉树 09. 从中序和先序遍历序列构造二叉树
题目:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 中等
方法一:迭代 时间复杂度O(N) 空间复杂度O(N)
def buildTree(preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ dic = {val:idx for idx,val in enumerate(inorder)} def bt(l,r): if l > r: return None val = preorder.pop(0) root = TreeNode(val) mid = dic[val] root.left = bt(l,mid - 1) # 这里是先左子树 root.right = bt(mid + 1,r) return root return bt(0,len(inorder) - 1)

浙公网安备 33010602011771号