📅  最后修改于: 2023-12-03 14:58:22.264000             🧑  作者: Mango
该题目考察了二叉树的知识点。给定一个二叉树,需要实现一个函数,该函数获取到二叉树的根节点,将二叉树的每层第一个元素放入结果列表中,并返回该列表。
示例输入:
1
/ \
2 3
\ \
4 5
示例输出:
[1, 2, 4]
以下是Python语言的实现:
def get_first_node_of_each_level(root):
if not root:
return []
result = []
queue = [root] # 当前遍历的层的节点队列
while queue:
# 获取当前层的节点个数
level_size = len(queue)
for i in range(level_size):
# 将当前层的节点从队列中弹出,并将当前层的第一个节点添加到结果中
node = queue.pop(0)
if i == 0:
result.append(node.val)
# 将左右子节点加入队列中
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result
以上代码使用了BFS的思想,从二叉树的根节点开始遍历每一层,将每个节点的左右子节点加入队列中,来判断是否有下一层。同时记录每一层的节点数,在for循环中弹出当前队列的节点,判断是否是当前层的第一个节点,若是,则加入结果列表中。最终返回结果列表即可。