📜  使用队列的二叉树右视图(1)

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

使用队列的二叉树右视图

简介

在二叉树中,右视图表示从右侧观察二叉树时能看到的节点值序列。本文将介绍如何使用队列来实现二叉树的右视图。

实现思路

使用广度优先搜索(BFS)算法,在每一层遍历结束时,将该层的最后一个节点的值加入右视图序列中。

具体实现过程:

  1. 定义一个队列,用于存放每一层的节点。
  2. 将根节点加入队列。
  3. 进入循环,直到队列为空:
    1. 获取当前队列的长度len,表示当前层的节点个数。
    2. 遍历当前层的所有节点,将它们的左右子节点加入队列中。
    3. 将当前层的最后一个节点的值加入右视图序列中。
  4. 返回右视图序列。
代码实现

以下是Python语言实现代码:

from collections import deque

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def rightSideView(root: TreeNode) -> List[int]:
    if not root:
        return []
    queue = deque([root])
    res = []
    while queue:
        level_len = len(queue)
        for i in range(level_len):
            node = queue.popleft()
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
            if i == level_len - 1:
                res.append(node.val)
    return res
测试样例

输入:

    1
   / \
  2   3
   \   \
    5   4

输出:[1, 3, 4]

总结

本文介绍了如何使用队列来实现二叉树的右视图。该算法的时间复杂度为$O(n)$,其中n是二叉树的节点个数。通过这种方法,我们可以方便地获取二叉树的右视图,应用于一些需要二叉树右侧视角的场景中。