BFS模板
var rightSideView = function(root) {
//返回层序遍历的每一层的最后一个节点
let res=[]//存储结果
let queue=[root]
if (root === null) return []
while(queue.length>0){
const n = queue.length
let cur_list=[]//可按需增加这一层节点的列表
for(let i=0;i<n;i++){
//队列出队,拿到当前节点
const cur_node = queue.shift()
//一般不同的处理在这里
//if (i=== n-1) res.push(cur_node.val)//当前层的最后一个节点加入结果列表
//cur_list.push(cur_node.val)//层序遍历
//当前节点的左孩子右孩子入队
if(cur_node.left) queue.push(cur_node.left)
if(cur_node.right) queue.push(cur_node.right)
}
}
return res
};
class Solution:
def BFS(self, start, target):
q = [] # 用一个列表做队列
v = [] # 记录走过的路
q.append(start) # 把起点放入队列
v.append(start) #加入走过的路
step = 0 # 记录扩散步数
while q: # 当队列不为空时
size = len(q)
# 将当前队列中的所有节点向四周扩散
for _ in range(size):
cur = q.pop(0) # 从头部取出节点
if cur == target: # 判断是否到达终点
return step
for x in cur.neighbors: # 将cur的相邻节点加入队列
if x not in v: #如果结点没有访问过
q.append(x)
v.append(x)
step += 1 # 增加步数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人