📜  门| GATE CS Mock 2018 |第 39 题(1)

📅  最后修改于: 2023-12-03 14:58:22.264000             🧑  作者: Mango

GATE CS Mock 2018 | 第 39 题

该题目考察了二叉树的知识点。给定一个二叉树,需要实现一个函数,该函数获取到二叉树的根节点,将二叉树的每层第一个元素放入结果列表中,并返回该列表。

示例输入:

      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循环中弹出当前队列的节点,判断是否是当前层的第一个节点,若是,则加入结果列表中。最终返回结果列表即可。