leetcode-面试题32 ①②③
题一:
提交:层序遍历bfs O(N) O(N)
class Solution: def levelOrder(self, root: TreeNode) -> List[int]: if not root : return [] queue = [root] res = [] while queue: #for i in range(len(queue)): cur = queue.pop(0) res.append(cur.val) if cur.left: queue.append(cur.left) if cur.right: queue.append(cur.right) return res
题二:
提交:
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root:return [] res = [] queue = [root] while queue: digit = [] tmp = [] for i in queue: digit.append(i.val) if i.left:tmp.append(i.left) if i.right:tmp.append(i.right) res.append(digit) queue = tmp[:] return res
题三:
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root:return [] res = [] queue = [root] m = 0 while queue: tmp = [] for i in range(len(queue)): node = queue.pop(0) tmp.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) if m % 2 == 0: res.append(tmp) else: res.append(tmp[::-1]) m += 1 return res