📜  打印二叉树的左视图(1)

📅  最后修改于: 2023-12-03 15:10:01.523000             🧑  作者: Mango

打印二叉树的左视图

在二叉树中,左视图指的是从根节点开始看左侧的节点。打印二叉树的左视图可以让我们更好地了解树的形态和结构。

问题分析

实现打印二叉树的左视图的关键在于遍历二叉树并保存每一层的第一个节点。这里我们采用 BFS(宽度优先搜索)的方法,依次访问每一层的节点,并在遍历每一层时保存第一个节点。

我们可以创建一个队列 queue 来进行 BFS,首先将根节点加入队列。随后,我们依次遍历队列中的每一个节点,将其左右子节点加入队列,并在每一层的节点遍历完成之后,将该层中第一个节点的值加入答案数组中即可。

代码实现

使用 Python 语言实现 BFS 的具体代码如下:

def print_left_view(root):
    if not root:
        return []

    queue = [root]
    res = []
    
    while queue:
        level_size = len(queue)

        for i in range(level_size):
            node = queue.pop(0)
            if i == 0:
                res.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

    return res
复杂度分析

时间复杂度:O(n)

每个节点都只被遍历一次,因此时间复杂度为 O(n)。

空间复杂度:O(n)

队列中的元素数量不超过 O(n),因此空间复杂度为 O(n)。

总结

打印二叉树的左视图是一道基础的二叉树遍历问题,通过 BFS 方法遍历二叉树,可以实现对树的每一层的第一个节点的查找和保存,最终获得树的左视图。需要注意的是,对于每一层的遍历,需要使用一个变量 level_size 保存当前层的节点数量,并在进入下一层之前将队列中前 level_size 个节点弹出,这一步可以使得 BFS 依次访问每一层的节点。