96SEO 2026-02-19 17:47 13
。

而前、中、后序遍历则是DFS#xff08;深度优先搜索#xff09;。
从字面意思也很好理解#xff0c;DFS就是一条路走到黑#xff0c;BFS则是一层一层地展开。
…
BFS也就是广度宽度优先搜索二叉树的层序遍历就是一个BFS的过程。
而前、中、后序遍历则是DFS深度优先搜索。
从字面意思也很好理解DFS就是一条路走到黑BFS则是一层一层地展开。
N叉树与二叉树的区别无非就是二叉树最多只有两个子节点用left和right两个指针就够储存。
而N叉树有N多个节点需要一个指针数组来储存。
在用BFS解决问题时几乎都要借助队列结构用队列的先进先出特性来储存上一层的数据。
首先把根节点放到队列里面然后从队列里面取节点出来把节点取出来后通过它找到它的子节点并带入到队列里面。
那么这个节点的使命就算完成了需要把它踢出队列。
循环往复直到最后队列为空则完成层序遍历。
但对于这个题并不是简单的层序遍历就行它还要把每一层划分出来。
这个其实也很简单只要记录每一层有几个节点记为n个然后一次性的遍历n个并把这n个元素用数组储存起来。
可以直接使用size()计算该层元素个数。
qu;qu.push(root);while(!qu.empty()){vectorint
nqu.size();//获取该层有一个元素while(n--)//取出该层的所以元素并把子节点带入{Node*
rtqu.front();qu.pop();arr.push_back(rt-val);for(int
i0;irt-children.size();i)qu.push(rt-children[i]);}if(!arr.empty())
dx[4]{0,0,-1,1}dy[4]{-1,1,0,0};
它的扩展逻辑就和上文层序遍历中那一题差不多但需要一个变量记录层数。
在扩展过程中需要判断是否是目标值还需要把扩展到的元素做标记。
dx[4]{0,0,-1,1},dy[4]{-1,1,0,0};int
maze[0].size();vectorvectorbool
hash(n,vectorbool(m));//记录是否已经搜索过queuepairint,int
qu;qu.push({entrance[0],entrance[1]});hash[entrance[0]][entrance[1]]
0;//记录层数while(!qu.empty()){ret;int
bdy[k];if(x0xny0ym!hash[x][y]maze[x][y].){if(x0||xn-1||y0||ym-1)
这个题我们可以做一个多趟的BFS首先确定第一个起点和终点进行BFS搜索并记录路径长度。
注意由题可知没有两棵树的高度是相同的也就是说树的高度和它的坐标是一一对应的。
把所有树的高度1的元素都记录到一个数组中然后对该数组进行排序。
这样我们就知道搜索的先后顺序。
forest)传入起点坐标与终点的值它的作用是记录起点到终点的最短距离然后返回终点的坐标。
如果不能被搜索到返回{-1
进行一次bfs后得到的返回值作为下一次搜索的起点下标而终点值从刚才排序好的数组中取到。
arr.push_back(forest[i][j]);sort(arr.begin(),arr.end());int
i0;iarr.size();i){if(i0arr[i]forest[0][0])
hash(m,vectorbool(n));queuepairint,int
true;while(!qu.empty()){ret;int
bdy[k];if(x10x1my10y1n!hash[x1][y1]forest[x1][y1]!0){if(forest[x1][y1]target)
{x1,y1};hash[x1][y1]true;qu.push({x1,y1});}}}}return
多源最短路它的特点就是可以选择多个起点找出到达终点的最短路径。
其实它和单源最短路差别并不是很大我们只需要把所有起点看作一个整体也就是把它当作“超级源点”那么它就是一个单源最短路问题。
这个题很明显我们可以使用BFS解决但是如果每个1的位置都用一次BFS搜索未免也太麻烦那么我们可以用多源最短路的思想把所有0当作起点然后去搜索1并填充最短路径。
那么为什么不用所有的1为起点去搜索0呢因为我们需要填写的信息是1的位置如果用1去搜索0的话最后就不能找到原来那个1的位置。
dx[4]{0,0,1,-1},dy[4]{1,-1,0,0};vectorvectorint
mmat.size(),nmat[0].size();vectorvectorint
ret(m,vectorint(n,-1));//充当了哈希表的功能queuepairint,int
j0;jn;j){if(mat[i][j]0){q.push({i,j});ret[i][j]0;}}}int
xdx[k]i,ydy[k]j;if(x0xmy0ynret[x][y]-1){ret[x][y]tmp;q.push({x,y});}}}}return
通常用顶点来表示一个活动用边的指向来表示活动之间的先后顺序。
如
1.记录每个顶点的入度边个数和出度边的指向。
2.把所有入度边为0的节顶点push到队列中。
3.拿出队头元素加入到结果中。
4.把该元素指向的所有顶点入度边减1并判断如果有顶点的入度边为0则push到队列。
循环执行3,4部直到队列为空则完成排序。
i0;iprerequisites.size();i){int
bprerequisites[i][1];in[a];out[b].push_back(a);}
q.push(i);while(!q.empty()){int
q.front();ret.push_back(v);q.pop();for(int
i0;iout[v].size();i)if(--in[out[v][i]]0)
q.push(out[v][i]);}if(ret.size()!numCourses)
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback