当前位置: 首页 > wzjs >正文

南宁做网站外包官网建设

南宁做网站外包,官网建设,郑州中原新区最新消息,wordpress 图片广告插件BFS(广度优先搜索) 是一种用于遍历或搜索树/图的算法,逐层访问节点,适合解决最短路径、层级遍历等问题。 一、BFS 的核心思想 队列结构:用队列(先进先出)保存待处理的节点。 逐层扩散&#xff…

BFS(广度优先搜索)
是一种用于遍历或搜索树/图的算法,逐层访问节点,适合解决最短路径、层级遍历等问题。

一、BFS 的核心思想
队列结构:用队列(先进先出)保存待处理的节点。
逐层扩散:从起点开始,先处理当前层的所有节点,再处理下一层。
避免重复:用 visited 集合(或标记)记录已访问的节点,防止死循环。

二、代码框架

function BFS(start, target) {const queue = [start];      // 初始化队列const visited = new Set();   // 记录已访问的节点visited.add(start);let step = 0;               // 记录扩散的步数(可选)while (queue.length > 0) {// 处理当前层的所有节点const levelSize = queue.length;for (let i = 0; i < levelSize; i++) {const current = queue.shift();  // 从队头取出节点// 判断是否到达终点if (current === target) return step;// 将相邻未访问的节点加入队列for (const neighbor of getNeighbors(current)) {if (!visited.has(neighbor)) {queue.push(neighbor);visited.add(neighbor);}}}step++;  // 步数增加(视题目需求决定)}return -1; // 未找到路径
}

三、经典问题示例

1、二叉树层序遍历

function levelOrder(root) {if (!root) return [];const queue = [root];const result = [];while (queue.length > 0) {const levelSize = queue.length;const currentLevel = [];for (let i = 0; i < levelSize; i++) {const node = queue.shift();currentLevel.push(node.val);if (node.left) queue.push(node.left);if (node.right) queue.push(node.right);}result.push(currentLevel);}return result;
}

2、 迷宫最短路径
假设有一个二维网格,求从起点 (0,0) 到终点 (m-1, n-1) 的最短步数(1 表示障碍):

function shortestPath(grid) {const rows = grid.length, cols = grid[0].length;const queue = [[0, 0]];  // 起点const visited = new Set().add('0,0');let step = 0;const directions = [[1,0], [-1,0], [0,1], [0,-1]]; // 上下左右while (queue.length > 0) {const levelSize = queue.length;for (let i = 0; i < levelSize; i++) {const [x, y] = queue.shift();if (x === rows-1 && y === cols-1) return step; // 到达终点for (const [dx, dy] of directions) {const nx = x + dx, ny = y + dy;if (nx >=0 && nx < rows && ny >=0 && ny < cols && grid[nx][ny] === 0) {const key = `${nx},${ny}`;if (!visited.has(key)) {queue.push([nx, ny]);visited.add(key);}}}}step++;}return -1; // 无法到达
}

四、BFS 的适用场景

1、最短路径问题(无权图最短步数)
2、层级遍历(如二叉树层序遍历)
3、扩散类问题(如病毒传播模拟、社交网络层级关系)

五、注意事项

1、队列操作:JavaScript 中直接用数组的 shift() 效率较低,可优化为维护一个指针(类似双端队列)。
2、去重方式:根据问题场景,可以用 Set、哈希表或直接修改原数据(如标记为已访问)。
3、终止条件:根据问题提前判断是否到达目标。

http://www.dtcms.com/wzjs/279065.html

相关文章:

  • 如何做网站迁移视频号关键词搜索排名
  • 中山企业集团网站建设互联网营销怎么做
  • 手机网站 pc网站模板电商运营主要负责什么
  • 独山县哪里有做网站的杭州排名推广
  • 江西省住房和城乡建设厅的网站开源cms建站系统
  • 珍岛信息技术有限公司做网站服务windows优化大师怎么用
  • 招远网站建设价格搜索词分析工具
  • 电脑做网站服务器视频教程百度百度一下首页
  • 做网站是学什么编程语言免费做网站怎么做网站
  • 镇江公司做网站最佳的搜索引擎
  • 建设工程投标文件在哪个网站有发布seo做关键词怎么收费的
  • 泉州cms建站系统网站关键词优化排名软件系统
  • 张家界做网站找谁设计网站推荐
  • 网站上海备案营销方案案例范文
  • 织梦动漫网站模板搜索引擎原理
  • 企业电子商务网站建设总结湖北权威的百度推广
  • 做网站的入门书籍微信营销推广软件
  • asp是网站开发吗南宁百度seo排名公司
  • 简单的工作室网站模板艾滋病多久能检查出来
  • 深圳价格实惠的网站建设公司武汉网站设计
  • 用自己服务器做网站常州seo建站
  • 聊城有制作网站的吗百度客服人工在线咨询电话
  • 广州企业网站怎么建企业网站
  • 柳州市城乡建设局网站百度指数的网址
  • wap网站制作软件seo内部优化具体做什么
  • 深圳网站建公司免费的十大免费货源网站
  • 高端网站设计电话seo网络推广培训班
  • 网站 代理 备案 费用传智播客培训机构官网
  • 做飞机票的图片的网站百度seo快速
  • 网站备案主体信息变更seo关键词排名优化哪好