102. Binary Tree Level Order Traversal

problem

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
return its level order traversal as:
[
  [3],
  [9,20],
  [15,7]
]

感觉这个题做过

solution

递归和压栈选一个解答

# 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]]
        """
        deeps = {}
        stack = [(root,0)]
        while stack:
            node, deep = stack.pop()
            if node:
                if not deeps.has_key(deep):
                    deeps[deep] = []
                deeps[deep].append(node.val)
                stack.append((node.right, deep+1))
                stack.append((node.left, deep+1))
        return deeps.values()
posted @ 2016-10-15 15:28  Salmd  阅读(97)  评论(0)    收藏  举报