📅  最后修改于: 2023-12-03 15:36:03.431000             🧑  作者: Mango
在二叉树中,经常需要对其进行遍历操作。其中一种遍历方式是从上到下逐层遍历二叉树的节点,这种方式又称为二叉树的层次遍历。本文将介绍二叉树的中到上到下遍历的实现方法和代码示例。
二叉树的中到上到下遍历,是通过队列实现的。遍历过程中,首先将根节点入队,然后依次将队头节点的左右子节点入队,再从队头进行出队操作,并将其值存入结果列表中。
下面是二叉树的中到上到下遍历的 Python 代码实现:
class TreeNode: # 定义二叉树节点
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def levelOrder(root: TreeNode) -> List[List[int]]:
if not root:
return []
res = []
queue = [root]
while queue:
level = []
level_size = len(queue)
for i in range(level_size):
cur_node = queue.pop(0)
level.append(cur_node.val)
if cur_node.left:
queue.append(cur_node.left)
if cur_node.right:
queue.append(cur_node.right)
res.append(level)
return res
在代码中,首先定义了 TreeNode
类来表示二叉树的节点,包含值和左右子节点。然后定义了 levelOrder(root: TreeNode) -> List[List[int]]
函数来实现二叉树的中到上到下遍历。该函数接收一个根节点 root
,并返回一个包含每层节点值的列表列表 res
。
该函数的主要流程是:先判断根节点是否为空,如果为空则直接返回空列表;否则创建一个空列表 res
和一个存放节点的队列 queue
。接着进行循环遍历,每次循环都定义一个空列表 level
和当前层的节点数量 level_size
,并在循环中进行出队操作,将出队节点的值存入 level
,并将其左右子节点入队。在循环完成后,将 level
加入 res
中,并重复以上操作,直至队列为空。最后返回结果列表 res
。
二叉树的中到上到下遍历是一种较为常用的遍历方式,由于其实现方法简单且易理解,因此在开发中被广泛应用。在实现中,需要用到队列的操作,因此需要熟练掌握队列的相关知识。