二叉树层序遍历,输出每层节点权值之和
时间: 2024-12-20 17:21:32 浏览: 3
二叉树模版
二叉树的层序遍历,也称为广度优先遍历(BFS),是指按照从上到下、从左到右的顺序逐层访问树的所有节点。在遍历时,通常会维护一个队列用于存储当前层级的节点。对于每个节点,我们会先将其权值加入结果之和,然后将它的左右孩子(如果存在)添加到队列中以便后续处理。当队列为空时,表示已经遍历完了一层,此时的结果就是这一层所有节点权值的总和。
算法步骤大致如下:
1. 创建一个空队列,将根节点放入队列。
2. 当队列非空时,循环执行以下操作:
a. 弹出队首节点,并计算其权值加到总和中。
b. 将该节点的左右子节点(如果存在)依次入队。
3. 遍历完成后,返回每一层节点权值之和的列表。
例如,在Python中,可以这样实现:
```python
def sum_per_level(root):
if not root:
return []
queue = [(root, 0)] # 根节点及其层数
result = []
while queue:
node, level = queue.pop(0)
result.append(node.val) # 记录节点权值
if node.left:
queue.append((node.left, level + 1))
if node.right:
queue.append((node.right, level + 1))
return [sum(result[i:i+level]) for i in range(0, len(result), level)]
```
阅读全文