# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: ans = [] ifnot root: return ans queue = collections.deque() queue.append(root) flag = False while queue: length = len(queue) # 结果集也用双端队列,省去一次翻转动作 result = collections.deque() for i in range(length): p = queue.popleft() if flag: result.appendleft(p.val) else: result.append(p.val) if p.left: queue.append(p.left) if p.right: queue.append(p.right) ans.append(list(result)) flag = not flag return ans
# Definition fora binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: ans = [] if not root: return ans queue = collections.deque() queue.append(root) while queue: # 处理奇数层 从左向右打印 从左向右添加下层节点 length = len(queue) result = list() for i in range(length): p = queue.popleft() result.append(p.val) ifp.left: queue.append(p.left) ifp.right: queue.append(p.right) ans.append(list(result)) if not queue: break # 处理偶数层 从右向左打印 从右向左添加下层节点 length = len(queue) result = list() for i in range(length): p = queue.pop() result.append(p.val) ifp.right: queue.appendleft(p.right) ifp.left: queue.appendleft(p.left) ans.append(list(result)) return ans