我看完二叉树先序遍历、中序遍历、后续遍历就试着解这题。本人对已有解法不知道的。提一句额外话,什么中序遍历,名字起的就不对。先出中出后出多好,主要是好在有中出。二叉树的遍历,不,几乎所有树的遍历都是大概这样的算法:

TreeWalk(pNode):
    if pNode has childs:
    then for each child do TreeWalk(child)

我的算法和大家的有点不一样,当然如果理解了先中后遍历,理解我这个真的很简单,我直接贴:

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None 
# @param root TreeNode类 
# @return int整型二维数组
#
class Solution:
    def levelOrder(self , root ):
        # write code here
        res=[]
        if not root:
            return res
        #该函数获取当前节点的子节点数据,并保存到结果里
        def getThisChild(level,pNode):
            if not pNode:
                return
            tmp=[]
            if pNode.left:
                tmp.append(pNode.left.val)
            if pNode.right:
                tmp.append(pNode.right.val)
            if len(res)>level:
                res[level]+=tmp
            else:
                res.append(tmp)
        def treeWalk(deep, parent):
            getThisChild(deep, parent)
            if not parent:
                return
            deep=deep+1            
            treeWalk(deep, parent.left)
            treeWalk(deep, parent.right)
        res.append([root.val])   
        treeWalk(1, root)
        res.pop()
        return res

可能有一点瑕疵,大晚上的我就懒的改了,过了就行。