199. 二叉树的右视图(中)

发布时间 2023-12-22 18:33:31作者: Frommoon

题目

  • 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

题解:BFS

  • 用BFS,每一层最后一个弹出队列的元素加到结果列表里面
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        
        if not root:# 如果根节点为空,直接返回空列表
            return []
        res=[] # 存储结果的列表
        q=[]  # 使用列表作为队列
        q.append(root)# 将根节点加入队列
        res.append(root.val)# 将根节点的值加入结果列表
        step=1# 记录当前层的编号
        while q:
            size=len(q)
            for _ in range(size):
                cur=q.pop(0) # 从队列头部取出节点
                if cur.left:
                    q.append(cur.left)# 将左子节点加入队列
                if cur.right:
                    q.append(cur.right)# 将右子节点加入队列
            if q:#确保叶子节点后面一层的空结点不被加入进来
                res.append(q[-1].val)# 将当前层最后一个节点的值加入结果列表
            step+=1# 更新层编号
        return res