题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题方法
使用队列保存,每次把队列里的原先内容进行出队列操作,再把每个元素的非空左右子节点进入队列。因此即可得到每层的遍历。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
from collections import deque
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
if not root: return []
queue = deque()
res = []
queue.append(root)
while queue:
_len = len(queue)
for i in range(_len):
node = queue.popleft()
res.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return res
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24