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

巴适网站建设徐州网站开发案例

巴适网站建设,徐州网站开发案例,网站开发详细设计文档模板,网站域名如何注册BFS的基本概念 BFS 是广度优先搜索#xff08;Breadth-First Search#xff09;的缩写#xff0c;是一种图遍历算法。它从给定的起始节点开始#xff0c;逐层遍历图中的节点#xff0c;直到遍历到目标节点或者遍历完所有可达节点。 BFS 算法的核心思想是先访问当前节点的…BFS的基本概念 BFS 是广度优先搜索Breadth-First Search的缩写是一种图遍历算法。它从给定的起始节点开始逐层遍历图中的节点直到遍历到目标节点或者遍历完所有可达节点。 BFS 算法的核心思想是先访问当前节点的所有邻居节点然后再访问邻居节点的邻居节点依此类推直到遍历完整个图。 BFS 模版 BFS 使用队列Queue数据结构来辅助实现它按照先进先出FIFO的顺序管理待访问的节点。用**集合Set**来辅助节点是否已经被访问算法的基本流程如下 将起始节点放入队列中并标记为已访问。从队列中取出一个节点访问该节点,判断该节点是否符合条件。将该节点的所有未访问过的邻居节点加入队列并标记为已访问。重复步骤 2 和步骤 3直到队列为空。 模版1不必记录深度 function BFS(start, target) {const queue []; // 核心数据结构const visited new Set(); // 避免走回头路// 将起始节点放入队列中并标记为已访问。queue.push(start); visited.add(start);while (queue.length 0) {const sz queue.length;const cur queue.shift();/* 划重点这里判断是否到达终点 */if (cur target)return step;/* 将 cur 的所有未访问过的邻居节点加入队列并标记为已访问。 */for (const x of cur.adj()) {if (!visited.has(x)) {queue.push(x);visited.add(x);}}} }模版2需要记录深度的 function BFS(start, target) {const queue []; // 核心数据结构const visited new Set(); // 避免走回头路// 将起始节点放入队列中并标记为已访问。queue.push(start); visited.add(start);let step 0; // 记录扩散的步数while (queue.length 0) {const sz queue.length;/* 将当前队列中的所有节点向四周扩散 */for (let i 0; i sz; i) {const cur queue.shift();/* 划重点这里判断是否到达终点 */if (cur target)return step;/* 将 cur 的所有未访问过的邻居节点加入队列并标记为已访问。 */for (const x of cur.adj()) {if (!visited.has(x)) {queue.push(x);visited.add(x);}}}/* 划重点更新步数在这里 */step;} }BFS 算法通常用于以下场景 寻找两个节点之间的最短路径。在树或图中寻找特定深度或层级的节点。检查图是否是连通的。拓扑排序。解决迷宫问题等。 例题 111 二叉树的最小深度 给定一个二叉树找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明叶子节点是指没有子节点的节点。 var minDepth function(root) {if(root null){return 0;}// 记录深度let step 0;// BFS关键数据结构let queue [];let visited new Set();queue.push(root);visited.add(root);while(queue.length 0){let size queue.length;for(let i 0;isize;i){/* 划重点这里判断是否到达终点 */let node queue.shift();if(node.left null node.right null){return step1;}/* 将 cur 的所有未访问过的邻居节点加入队列并标记为已访问。 */if(node.left ! null !visited.has(node.left)){queue.push(node.left);visited.add(node.left);}if(node.right ! null !visited.has(node.right)){queue.push(node.right);visited.add(node.right);}}step;}return step; };863.二叉树中所有距离为 K 的结点 给定一个二叉树具有根结点 root 一个目标结点 target 和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 思路 需要我们在树中寻找特定深度或层级的节点但是又不是从根节点开始因此需要我们将树 转化成 图。 可以通过哈希表和DFS将树转化成图 var distanceK function(root, target, k) {// 起点是target先通过哈希表DFS将树转化成图const parents getParents(root);// 结果数组let ans []// BFS关键数据结构let queue []const visited new Set()queue.push(target);visited.add(target.val);// 记录深度let step 0;while(queue.length){// 遍历每一层的节点const len queue.length;for(let i 0;ilen;i){// 判断当前节点是否符合条件。const node queue.shift();if(step k){ans.push(node.val);}// 将相邻的节点都放入到if(node.left !visited.has(node.left.val)){queue.push(node.left);visited.add(node.left.val);}if(node.right !visited.has(node.right.val)){queue.push(node.right);visited.add(node.right.val);}if(parents.has(node.val) !visited.has(parents.get(node.val).val)){queue.push(parents.get(node.val));visited.add(parents.get(node.val).val);}}// 遍历完一层后深度1step;}return ans;};function getParents(root) {const parents new Map();const findParents (root) {if (root.left) {parents.set(root.left.val, root);findParents(root.left);}if (root.right) {parents.set(root.right.val, root);findParents(root.right);}};findParents(root);return parents; }
http://www.w-s-a.com/news/226504/

相关文章:

  • 景安做网站教程互联网小程序开发
  • 桂林北站离阳朔多远贵州省建设厅住房和城乡建设官网二建考试
  • 浙江省建设厅 网站是多少wordpress淘宝客一键
  • 网站流量少怎么做5个不好的网站
  • 随州网站建设有限公司个人申请注册公司需要多少钱
  • 东莞做商城网站建设wordpress批量下载外链图片
  • 新网站建设运营年计划书仓山区建设局招标网站
  • 网站开发天津网站建设项目组织图
  • 网站开发认证考试石家庄高端网站开发
  • 网站建设第一步怎么弄站酷网页
  • 设备网站模板江西的赣州网站建设
  • 邯郸营销型网站国际招聘人才网
  • hexo wordpress 主题织梦网站优化教程
  • 网站建设方案及上海市建设协会网站
  • 轴承外贸网站怎么做南宁网站排名优化公司哪家好
  • 沈阳企业网站建站郴州优化公司
  • cctv5+手机在线直播观看seo关键词排名优化方法
  • 网站建设公司怎么谈单怎么开通微信小程序商店
  • 深圳做网站案例一个服务器可以备案几个网站
  • 网络营销策划名词解释泉州百度推广排名优化
  • 一键生成网站的软件互联网营销师是干什么
  • 网站后台管理水印怎么做手机优化设置
  • 哪个网站做图文素材多wordpress++优化
  • 建设网站就选用什么样的公司网站类型分类有哪些
  • 找平面设计师网站网站建设须知
  • 建设联结是不是正规网站wordpress 微博同步
  • 瑞安微网站建设广州推广
  • 做旅游宣传网站的流程图中国企业集成网电子商务
  • 开发商城网站开发成交功能网站
  • 网站建设公司专业公司排名搭建网站的企业