题目描述:
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
python代码:
- 思路:二叉树的层次遍历(广度优先搜索 BFS),借助一个队列实现:
1、将第一个元素加入队列;
2、队列不为空时取队首元素;
3、将下一层元素加入队尾;
4、调到第二步,直到队列为空。
# -*- 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):
res = []
if not root:
return res
queue = [root]
while queue:
cur_node = queue.pop(0) #注意此处为 pop(0),队列先进先出
res.append(cur_node.val)
if cur_node.left:
queue.append(cur_node.left)
if cur_node.right:
queue.append(cur_node.right)
return res