103. 二叉树的锯齿形层次遍历

    xiaoxiao2023-11-04  161

    分析 接着上一题的思路

    我们用队列q遍历树的节点 顺序永远是 从左往右 从上往下定义一个 l2r 记录当前层我们应该 从左往右 还是 从右往左 当 从左往右 时,order添加当前node的val到队尾当 从右往左 时,order添加当前node的val到队首 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]: result = list() if not root: return [] # 队列 q = list() q.append(root) # 定义 从左往右 还是 从右往左 的bool值 l2r = 1 while q: # 该层节点val列表 order = list() # 该层节点个数 n = len(q) if l2r: for i in range(n): node = q.pop(0) # 添加到队尾 order.append(node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) else: for i in range(n): node = q.pop(0) # 添加到队首 order.insert(0, node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) result.append(order[:]) # 更改 l2r l2r = l2r ^ 1 return result
    最新回复(0)