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  # 增加步数
posted @   Frommoon  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示