双端队列,与奇偶数行控制实现正反顺序输出

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