102. 二叉树的层次遍历

102. 二叉树的层次遍历

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if root is None:
            return []
        stacks = []
        queue = [root]
        while queue:
            stack = []
            queue_size = len(queue)
            # 明确当前层的结点数n后,依次取出前n个结点(即当前层的这n个结点),同时,将下一层的结点也保存到queue中
            for i in range(queue_size):
                node = queue.pop(0)
                stack.append(node.val)
                left = node.left
                right = node.right
                if left:
                    queue.append(left)
                if right:
                    queue.append(right)
            stacks.append(stack)
        return stacks