二叉树层序遍历的应用,基础代码和二叉树的层序遍历一致,用了广度优先搜索算法(bfs),详细解答可见我对层序遍历的解答,与层序遍历的区别在于在得到了层序遍历的输出以后,对于其中的奇数层对应的数组进行翻转。需要注意的是,在得到的结果进行翻转更方便,在bfs进行翻转较难理解,容易出错。

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return int整型二维数组
#
class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        # write code here
        if not pRoot:
            return []
        queue = [(pRoot, 0)]
        levelMap = {}
        
        while queue:
            node, level = queue.pop(0)
            if node.left:
                queue.append((node.left, level+1))
            if node.right:
                queue.append((node.right, level+1))
            if level in levelMap:
                levelMap[level].append(node.val)
            else:
                levelMap[level] = [node.val]
        res = []
        for key, val in levelMap.items():
            if key % 2 == 0:
                res.append(val)
            else:
                res.append(val[::-1])
        return res