双端队列,与奇偶数行控制实现正反顺序输出
from collections import deque class Solution: def Print(self , pRoot: TreeNode) -> List[List[int]]: if not pRoot: return None zlist = [] flag = 1 d = deque([pRoot]) while d: tmp = [] for _ in range(len(d)): if flag == 1: # 奇数层,队列左出右进 node = d.popleft() if node.left: d.append(node.left) if node.right: d.append(node.right) elif flag == -1: # 偶数层,队列右出左进 node = d.pop() print(node.val) if node.right: # 交换左右节点入栈顺序,以保持原先一层的排布顺序 d.appendleft(node.right) if node.left: d.appendleft(node.left) tmp.append(node.val) flag = -1*flag # 奇偶数层控制标志 zlist.append(tmp) return zlist