From 0015de616b60f4a915752fe6f8fb5d38fd44de28 Mon Sep 17 00:00:00 2001 From: Ranganathan S V Date: Mon, 27 Feb 2023 11:01:18 +0530 Subject: [PATCH 1/2] fix: fixed error in DepthFirstSearch algorithm and test: added tests for DepthFirstSearch algorithm. --- Trees/DepthFirstSearch.js | 35 ++++++++++------------ Trees/test/DepthFirstSearch.test.js | 46 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 Trees/test/DepthFirstSearch.test.js diff --git a/Trees/DepthFirstSearch.js b/Trees/DepthFirstSearch.js index 0833d9d1de..b436704368 100644 --- a/Trees/DepthFirstSearch.js +++ b/Trees/DepthFirstSearch.js @@ -4,35 +4,32 @@ * DFS Algorithm for traversing or searching graph data structures. */ -function traverseDFS (root) { - const stack = [root] +// traverses a give tree from specified root +function traverseDFS (tree, root) { + const stack = [] const res = [] - + stack.push(searchDFS(tree, root)) + // if root is not present in the tree, returning empty array + if (!stack[0]) return res while (stack.length) { const curr = stack.pop() - res.push(curr.key) - - if (curr.right) { - stack.push(curr.right) - } - + res.push(curr.value) if (curr.left) { - stack.push(curr.left) + stack.push(tree[curr.left]) + } + if (curr.right) { + stack.push(tree[curr.right]) } } - return res.reverse() } function searchDFS (tree, value) { const stack = [] - stack.push(tree[0]) - while (stack.length !== 0) { for (let i = 0; i < stack.length; i++) { const node = stack.pop() - if (node.value === value) { return node } @@ -59,11 +56,10 @@ const tree = [ { value: 10, left: null, right: null }, { value: 1, left: null, right: null } ] - -searchDFS(tree, 9) -searchDFS(tree, 10) - -traverseDFS(6) +searchDFS(tree, 9) // { value: 9, left: 7, right: 8 } +searchDFS(tree, 200) // null +traverseDFS(tree, 6) // [ 1, 2, 3, 4, 5, 8, 10, 9, 7, 6 ] +traverseDFS(tree, 200) // [] // 6 // / \ @@ -74,3 +70,4 @@ traverseDFS(6) // 2 8 10 // / // 1 +export { searchDFS, traverseDFS } diff --git a/Trees/test/DepthFirstSearch.test.js b/Trees/test/DepthFirstSearch.test.js new file mode 100644 index 0000000000..6c76fbb3d6 --- /dev/null +++ b/Trees/test/DepthFirstSearch.test.js @@ -0,0 +1,46 @@ +import { searchDFS, traverseDFS } from '../DepthFirstSearch' + +describe('Depth First Tree Traversal', () => { + const 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 } + ] + + // 6 + // / \ + // 5 7 + // / \ \ + // 3 4 9 + // / / \ + // 2 8 10 + // / + // 1 + + it('should be null if given value is not present in the tree - DF Search', () => { + const res = searchDFS(tree, 200) + expect(res).toStrictEqual(null) + }) + + it('should return the node if given value is present in the tree - DF Search', () => { + const res = searchDFS(tree, 9) + expect(res).toStrictEqual({ value: 9, left: 7, right: 8 }) + }) + + it('should return empty array if given root is not present in the tree - DF Traversal', () => { + const traversal = traverseDFS(tree, 200) + expect(traversal).toStrictEqual([]) + }) + + it('should return DFT array of given tree from specified root if given root is present in the tree - DF Traversal', () => { + const traversal = traverseDFS(tree, 6) + expect(traversal).toStrictEqual([1, 2, 3, 4, 5, 8, 10, 9, 7, 6]) + }) +}) From 7cd3870b11d33bc7a731180fdceb79190c052e2d Mon Sep 17 00:00:00 2001 From: Ranganathan S V Date: Tue, 28 Feb 2023 16:14:16 +0530 Subject: [PATCH 2/2] changed traverseDFS function parameters in DepthFirstSearch.js file --- Trees/DepthFirstSearch.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Trees/DepthFirstSearch.js b/Trees/DepthFirstSearch.js index b436704368..4c0c43db41 100644 --- a/Trees/DepthFirstSearch.js +++ b/Trees/DepthFirstSearch.js @@ -4,11 +4,11 @@ * DFS Algorithm for traversing or searching graph data structures. */ -// traverses a give tree from specified root -function traverseDFS (tree, root) { +// traverses a give tree from specified root's value +function traverseDFS (tree, rootValue) { const stack = [] const res = [] - stack.push(searchDFS(tree, root)) + stack.push(searchDFS(tree, rootValue)) // if root is not present in the tree, returning empty array if (!stack[0]) return res while (stack.length) { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy