2026/4/16 16:15:29
网站建设
项目流程
浙江建设信息港网站,织梦网站如何做地区分站,微企点网站建设的教学视频,新软件推广平台题目给定一个二叉树的 根节点 root#xff0c;想象自己站在它的右侧#xff0c;按照从顶部到底部的顺序#xff0c;返回从右侧所能看到的节点值。示例 1#xff1a;输入#xff1a;root [1,2,3,null,5,null,4]输出#xff1a;[1,3,4]解释#xff1a;示例 2#xff1a;…题目给定一个二叉树的根节点root想象自己站在它的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。示例 1输入root [1,2,3,null,5,null,4]输出[1,3,4]解释示例 2输入root [1,2,3,4,null,null,null,5]输出[1,3,4,5]解释示例 3输入root [1,null,3]输出[1,3]示例 4输入root []输出[]提示:二叉树的节点个数的范围是[0,100]-100 Node.val 100思路很自然的一个想法——二叉树的层序遍历输出每一层的最后一个节点值在遍历当前层时用n记录当前层有多少个节点并判断是否为最后一个节点代码# Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution: def rightSideView(self, root: Optional[TreeNode]) - List[int]: if not root: return [] # 二叉树为空 queue collections.deque() # 定义双端队列 ans [] # 定义返回的答案 queue.append(root) while queue: # 层序遍历二叉树 n len(queue) # 记录当前层的节点数 for i in range(n): # 在存进下一层节点时计数 node queue.popleft() # 该节点已遍历弹出 if i n - 1: # 如果是该层最后一个节点存入ans ans.append(node.val) if node.left: queue.append(node.left) # 把下一层的节点存进队列 if node.right: queue.append(node.right) return ans