# 遍历root while queue: # 移去并且返回一个元素,queue 最左侧的那一个 node = queue.popleft() # 获取node的详细情况 result.append(node.val) print(node.val) # 访问左树 left = node.left if left != None: queue.append(left) # 访问右树 right = node.right if right != None: queue.append(right) return result
while queue: node = queue.popleft() result.append(node.val) print(node.val) left = node.left if left != None: queue.append(left) right = node.right if right != None: queue.append(right)
return result
根据需求,首先先解决输出是
1 2 3 4 5
[ [3], [20,9], [15,7] ]
的问题,其实说明内部嵌套多个队列,改写一下,当遍历每一层的时候,添加到新的队列当中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
while queue: # 定义一个新的队列 tmp = deque() # 判断队列循环到哪里 for i in range(len(queue)): node = queue.popleft() # tmp 队列 添加 val数据 tmp.append(node.val) left = node.left if left != None: queue.append(left) right = node.right if right != None: queue.append(right) result.append(list(tmp)) return result
while queue: tmp = deque() for i in range(len(queue)): print(len(result)) node = queue.popleft() if len(result) % 2: tmp.appendleft(node.val) else: tmp.append(node.val) if node.left != None: queue.append(node.left) if node.right != None: queue.append(node.right) result.append(list(tmp)) return result