标签:type 构造二叉树 中序遍历 help self dtree 没有 == node
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
3
/ \
9 20
/ \
15 7
1 class Solution: 2 def buildTree(self, preorder, inorder): 3 """ 4 :type preorder: List[int] 5 :type inorder: List[int] 6 :rtype: TreeNode 7 """ 8 def helper(in_left = 0, in_right = len(inorder)): 9 nonlocal pre_idx 10 # if there is no elements to construct subtrees 11 if in_left == in_right: 12 return None 13 14 # pick up pre_idx element as a root 15 root_val = preorder[pre_idx] 16 root = TreeNode(root_val) 17 18 # root splits inorder list 19 # into left and right subtrees 20 index = idx_map[root_val] 21 22 # recursion 23 pre_idx += 1 24 # build left subtree 25 root.left = helper(in_left, index) 26 # build right subtree 27 root.right = helper(index + 1, in_right) 28 return root 29 30 # start from first preorder element 31 pre_idx = 0 32 # build a hashmap value -> its index 33 idx_map = {val:idx for idx, val in enumerate(inorder)} 34 return helper()
LeetCode--105--从前序与中序遍历序列构造二叉树(python)
标签:type 构造二叉树 中序遍历 help self dtree 没有 == node
原文地址:https://www.cnblogs.com/NPC-assange/p/11511853.html