剑指offer32.二叉树的层次遍历

思路:还是用队列保存将要打印的节点。为了把二叉树的每一行单独打印到一行里,我们需要两个变量:一个变量表示在当前层中还没有打印的节点数,另一个变量表示下一层的节点数

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if root == None:
            return root
        node = root
        que = []
        que.append(root)
        levels = []
        level = 0
        while que:
            levels.append([])
            level_lenth = len(que)
            for i in range(level_lenth):
                node = que.pop(0)
                levels[level].append(node.val)
                if node.left:
                    que.append(node.left)
                if node.right:
                    que.append(node.right)
            level+=1
        return levels

你可能感兴趣的:(剑指offer32.二叉树的层次遍历)