classTreeNode: def__init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right
defbuild_tree(arr): """层序遍历构建二叉树,None 表示空节点 输入示例: 1 2 3 None 4 5 6 """ ifnot arr or arr[0] isNone: returnNone root = TreeNode(arr[0]) queue = [root] i = 1 while queue and i < len(arr): node = queue.pop(0) if arr[i] isnotNone: node.left = TreeNode(arr[i]) queue.append(node.left) i += 1 if i < len(arr) and arr[i] isnotNone: node.right = TreeNode(arr[i]) queue.append(node.right) i += 1 return root
deftree_to_list(root): """层序遍历二叉树返回数组""" ifnot root: return [] result = [] queue = [root] while queue: node = queue.pop(0) if node: result.append(node.val) queue.append(node.left) queue.append(node.right) else: result.append(None) # 去掉末尾的 None while result and result[-1] isNone: result.pop() return result
五、实战示例:两数之和
核心代码模式(LeetCode)
1 2 3 4 5 6 7 8 9
classSolution: deftwoSum(self, nums: List[int], target: int) -> List[int]: hashmap = {} for i, num inenumerate(nums): complement = target - num if complement in hashmap: return [hashmap[complement], i] hashmap[num] = i return []
classSolution: deftwoSum(self, nums: List[int], target: int) -> List[int]: hashmap = {} for i, num inenumerate(nums): complement = target - num if complement in hashmap: return [hashmap[complement], i] hashmap[num] = i return []