199. 二叉树的右视图(中)
题目
- 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
python
题解: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
javascript
题解:层序遍历
- 返回层序遍历的每一层的最后一个节点
var rightSideView = function(root) {
//返回层序遍历的每一层的最后一个节点
let res=[]//存储结果
let queue=[root]
if (root === null) return []
while(queue.length>0){
const n = queue.length
for(let i=0;i<n;i++){
//队列出队,拿到当前节点
const cur_node = queue.shift()
//如果是当前层的最后一个节点加入结果列表
if (i=== n-1) res.push(cur_node.val)
//当前节点的左孩子右孩子入队
if(cur_node.left) queue.push(cur_node.left)
if(cur_node.right) queue.push(cur_node.right)
}
}
return res
};
标签:
力扣
, 力扣hot100-js
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人