diff --git a/Trees/BreadthFirstTreeTraversal.js b/Trees/BreadthFirstTreeTraversal.js index 0b4520612b..10fdc0aeb6 100644 --- a/Trees/BreadthFirstTreeTraversal.js +++ b/Trees/BreadthFirstTreeTraversal.js @@ -17,7 +17,26 @@ class BinaryTree { this.traversal = [] } - breadthFirst () { + breadthFirstIterative () { + this.traversal = [] + if (this.root) { + this.traversal.push(this.root) + } + for (let i = 0; i < this.traversal.length; i++) { + const currentNode = this.traversal[i] + if (currentNode.left) { + this.traversal.push(currentNode.left) + } + if (currentNode.right) { + this.traversal.push(currentNode.right) + } + this.traversal[i] = currentNode.data + } + return this.traversal + } + + breadthFirstRecursive () { + this.traversal = [] const h = this.getHeight(this.root) for (let i = 0; i !== h; i++) { this.traverseLevel(this.root, i) diff --git a/Trees/test/BreadthFirstTreeTraversal.test.js b/Trees/test/BreadthFirstTreeTraversal.test.js index 8e325e02d4..a6b795f31e 100644 --- a/Trees/test/BreadthFirstTreeTraversal.test.js +++ b/Trees/test/BreadthFirstTreeTraversal.test.js @@ -19,9 +19,14 @@ describe('Breadth First Tree Traversal', () => { // / \ \ // 3 6 9 - it('Binary tree - Level order traversal', () => { + it('Binary tree - Level order recursive traversal', () => { expect(binaryTree.traversal).toStrictEqual([]) - const traversal = binaryTree.breadthFirst() + const traversal = binaryTree.breadthFirstRecursive() + expect(traversal).toStrictEqual([7, 5, 8, 3, 6, 9]) + }) + + it('Binary tree - Level order iterative traversal', () => { + const traversal = binaryTree.breadthFirstIterative() expect(traversal).toStrictEqual([7, 5, 8, 3, 6, 9]) }) })