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