From ca824eeb4ba2f7e37d581b0db0d7cff398bf3c43 Mon Sep 17 00:00:00 2001 From: linghuam <1551827898@qq.com> Date: Fri, 24 May 2019 09:52:16 +0800 Subject: [PATCH] m --- .../学习js数据结构与算法/学习js数据结构与算法.md | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md b/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md index 5e1abb2..34f1862 100644 --- a/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md +++ b/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md @@ -455,7 +455,31 @@ function BFS(root, callback) { ```js // 深度优先(DFS)算法:用**栈**实现。 -function DFS(callback) {} +function DFS(graph, callback) { + var stack = []; + var vertexs = graph.vertices; + // 遍历每个节点,若节点未被访问,则入栈 + // 若栈非空,出栈 + // 继续遍历其相邻未被访问的子节点 + for (var i = 0, length = vertexs.length; i < length; i++) { + if (vertexs[i].status === 0) { + vertexs[i].status = 1; + stack.push(vertexs[i]); + while(stack.length) { + var v = stack.pop(); + v.status = 2; + callback(v); + var adjVertexs = graph.getVertexAdj(v.id); + adjVertexs.forEach(e => { + if (e.status === 0) { + e.status = 1; + stack.push(e); + } + }); + } + } + } +} ``` ## 排序和搜索算法