思路:在二叉树的层序遍历基础上加一个校验位,通过校验位来判断此层需要正序添加还是逆序添加。

Python:

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        res=[]
        if not root:
            return res
        queue=[]
        queue.append(root)
        flag=False
        while queue:
            size=len(queue)
            tmp=[]
            flag=~flag
            for _ in range(size):
                node=queue.pop(0)
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            if flag:
                res.append(tmp)
            else:
                res.append(tmp[::-1])
        return res