103. 二叉树的锯齿形层次遍历
https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/
解法一:层序
设一个布尔变量reverse,初始为False,每层反转一次,根据reverse决定是否将该层数据倒序
import queue
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
res = []
q = queue.Queue()
q.put(root)
reverse = False #是否反向,初始为否
while q.qsize() > 0:
count = q.qsize()
data = []
for _ in range(count):
node = q.get()
data.append(node.val)
if node.left:
q.put(node.left)
if node.right:
q.put(node.right)
if reverse: #本层反向
data = data[::-1]
reverse = not reverse #置反
res.append(data)
return res
最后更新于