题目描述
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。
样例
思路
首先要想到这是二叉树的层次遍历(也称为广度优先遍历BFS)。
利用队列可以实现二叉树的层次遍历,而此题是需要按层输出遍历结果,故需要记录每层的遍历结果。
直接上代码。
代码实现
# 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 printFromTopToBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if root is None:
return []
queue = [root]
res = []
while queue: # 这里实际上还是利用的队列的思想
level = [] # 这个用于记录每一层的遍历结果
new_queue = [] # 这个用于记录下一层的节点
for cur in queue: # 在遍历队列时是从头往后的
level.append(cur.val)
if cur.left is not None:
new_queue.append(cur.left)
if cur.right is not None:
new_queue.append(cur.right)
queue = new_queue # 更新节点队列
res.append(level)
return res
二叉树层次遍历
本文详细介绍了一种二叉树的层次遍历方法,即广度优先搜索(BFS),并提供了一个Python实现示例。该算法使用队列来记录每一层的节点,并通过迭代方式逐层遍历二叉树,最终将每层的节点值按顺序存储在列表中。
2244

被折叠的 条评论
为什么被折叠?



