| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Document</title> |
| </head> |
| <body> |
| <script> |
| function Queue(){ |
| this.items=[] |
| |
| Queue.prototype.push=function(element){ |
| this.items.push(element) |
| } |
| |
| Queue.prototype.shift=function(){ |
| return this.items.shift() |
| } |
| |
| Queue.prototype.front=function(){ |
| return this.items[0] |
| } |
| |
| Queue.prototype.isEmpty=function(){ |
| return this.items.length==0 |
| } |
| |
| Queue.prototype.size=function(){ |
| return this.items.length |
| } |
| |
| Queue.prototype.toString=function(){ |
| var resultString="" |
| for(var i=0;i<this.items.length;i++){ |
| resultString+=this.items[i]+"" |
| } |
| return resultString |
| } |
| |
| } |
| function Graph(){ |
| this.vertexes=[] //顶点 |
| this.edges=new Dictionay() //边 |
| |
| Graph.prototype.addVertexts=function(v){ |
| this.vertexes.push(v) |
| this.edges.set(v,[]) |
| } |
| Graph.prototype.addEdge=function(v1,v2){ |
| this.edges.get(v1).push(v2) |
| this.edges.get(v2).push(v1) |
| } |
| Graph.prototype.toString=function(){ |
| var resultString="" |
| |
| for(var i=0;i<this.vertexes.length;i++ ){ |
| resultString+=this.vertexes[i]+"->" |
| var vEdges=this.edges.get(this.vertexes[i]) |
| for(var j=0;j<vEdges.length;j++){ |
| resultString+=vEdges[j]+" " |
| } |
| resultString+="\n" |
| } |
| return resultString |
| |
| } |
| //初始化状态颜色 |
| Graph.prototype.initializeColor=function(){ |
| var colors=[] |
| for(var i=0;i<this.vertexes.length;i++){ |
| colors[this.vertexes[i]]="while" |
| } |
| return colors |
| } |
| // |
| Graph.prototype.bfs=function(initV,handler){ |
| //初始化样式 |
| var colors=this.initializeColor() |
| //创建队列 |
| var queue=new Queue() |
| //将顶点加入到队列中 |
| queue.enqueue=(initV) |
| // |
| while(!queue.isEmpty()){ |
| //从队列取出一个面点 |
| var v=queue.dequeue() |
| //获取和顶点相邻的另外顶点 |
| var vList=this.edges.get(v) |
| //将v的颜色设置未灰色 |
| colors[v]="gray" |
| //遍历所有的顶点 |
| for(var i=0;i<vList.length;i++){ |
| var e=vList[i] |
| if(colors[e]=="white"){ |
| colors[e]="gray" |
| queue.enqueue(e) |
| } |
| } |
| //v已经被探测 |
| handler(v) |
| //颜色设置未黑色 |
| colors[v]="black" |
| |
| } |
| } |
| Graph.prototype.dfs=function(initV,handler){ |
| //1初始化颜色 |
| //初始化颜色 |
| var colors=this.initializeColor() |
| //从某个顶点开始一次递归访问 |
| |
| } |
| Graph.prototype.dfsVisit=function(v,colors,handler){ |
| //将设置 |
| colors[v]="gray" |
| // |
| handler(v) |
| // |
| var vList=this.edges.get(v) |
| for(var i=0;i<vList.length;i++){ |
| var e=vList[i] |
| if(colors[e]=="white"){ |
| this.dfsVisit(e,colors,handler) |
| } |
| } |
| //将v设置成黑色 |
| colors[v]="block" |
| } |
| } |
| </script> |
| </body> |
| </html> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南