📅  最后修改于: 2023-12-03 15:25:54.081000             🧑  作者: Mango
如果你想要按照排序的顺序来打印出二叉树各个级别的节点,那么可以使用广度优先遍历的算法来实现。在这里,我们针对以数组形式给出的树来介绍如何实现。
在数组中以从上到下、从左到右的顺序表示一棵二叉树。如下所示,对于一个树节点为i的二叉树,它的左子节点为2i,右子节点为2i+1,父节点为i/2。
1
/ \
2 3
/ \ / \
4 5 6 7
以上二叉树在数组中的表示方式为:[1,2,3,4,5,6,7]
广度优先遍历算法需要使用到队列的数据结构。对于一个节点a,首先将其加入到队列中,然后依次取出队首节点,访问它的左子节点和右子节点,将这两个节点加入到队列的末尾。递归重复以上步骤,直到队列为空。
下面是按照排序顺序打印二叉树级别的python代码片段。
def levelOrder(tree):
if not tree:
return []
# 队列用于存储节点
queue, res = [tree], []
# 当队列不为空
while queue:
# 每次从队头取节点
cur_node = queue.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
以上代码中,tree
参数表示以数组形式给出的树的根节点。函数中使用了一个队列queue
来存储需要遍历的节点。在循环中,每次取出队首节点,并访问它的左右子节点,将它们加入到队列的末尾。最后,返回遍历结果res
。