这道题的关键是理解宽度优先搜索(BFS)算法,理解后就发现这题实质就是道简单的BFS题了。

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回从上到下每个节点值列表,例:[1,2,3]
    def PrintFromTopToBottom(self, root): #采用BFS的方式
        queue=[]
        result=[]           #queue为队列;result记录要print的值
        if root == None:
            return root
        queue.append(root)
        while queue:
            current_node=queue.pop(0)
            val=current_node.val
            result.append(val)
            if current_node.left != None:
                queue.append(current_node.left)
            if current_node.right != None:
                queue.append(current_node.right)
        return result