From 269157f65b10413fe4c0a80118b49a92e08d9874 Mon Sep 17 00:00:00 2001 From: Surendra Kumar <32401892+comradesurendra@users.noreply.github.com> Date: Tue, 23 Jun 2020 09:42:36 +0530 Subject: [PATCH] Added DFS Algorithm (#199) * FibonacciSearch * FibonacciSearch * Depth First Search Algorithms * Depth First Search Algorithms * Depth First Search Algorithms * Depth First Search Algorithms --- Graphs/DFS.js | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Graphs/DFS.js diff --git a/Graphs/DFS.js b/Graphs/DFS.js new file mode 100644 index 000000000..ec8ca7e66 --- /dev/null +++ b/Graphs/DFS.js @@ -0,0 +1,76 @@ +/* + * Author: Surendra Kumar + * DFS Algorithm implementation in JavaScript + * DFS Algorithm for traversing or searching graph data structures. +*/ + +function traverseDFS (root) { + const stack = [root] + const res = [] + + while (stack.length) { + const curr = stack.pop() + res.push(curr.key) + + if (curr.right) { + stack.push(curr.right) + } + + if (curr.left) { + stack.push(curr.left) + } + } + + return res.reverse() +} + +function searchDFS (tree, value) { + var stack = [] + + stack.push(tree[0]) + + while (stack.length !== 0) { + for (let i = 0; i < stack.length; i++) { + var node = stack.pop() + + if (node.value === value) { + return node + } + if (node.right) { + stack.push(tree[node.right]) + } + if (node.left) { + stack.push(tree[node.left]) + } + } + } + return null +} + +var tree = [ + { value: 6, left: 1, right: 2 }, + { value: 5, left: 3, right: 4 }, + { value: 7, left: null, right: 5 }, + { value: 3, left: 6, right: null }, + { value: 4, left: null, right: null }, + { value: 9, left: 7, right: 8 }, + { value: 2, left: 9, right: null }, + { value: 8, left: null, right: null }, + { value: 10, left: null, right: null }, + { value: 1, left: null, right: null } +] + +searchDFS(tree, 9) +searchDFS(tree, 10) + +traverseDFS(6) + +// 6 +// / \ +// 5 7 +// / \ \ +// 3 4 9 +// / / \ +// 2 8 10 +// / +// 1