From d9e1b93cfee545fa3c66435aed079884c89ee24a Mon Sep 17 00:00:00 2001 From: gerardubuntu Date: Wed, 7 Oct 2020 17:09:18 +0800 Subject: [PATCH 1/4] Implement BreadthFirstTreeTraversal in JavaScript --- Trees/BreadthFirstTreeTraversal.js | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Trees/BreadthFirstTreeTraversal.js diff --git a/Trees/BreadthFirstTreeTraversal.js b/Trees/BreadthFirstTreeTraversal.js new file mode 100644 index 0000000000..c7ab4b0600 --- /dev/null +++ b/Trees/BreadthFirstTreeTraversal.js @@ -0,0 +1,65 @@ +/* + Breadth First Tree Traversal or level order traversal implementation in javascript + Author: @GerardUbuntu +*/ + +class Node { + constructor(data) { + this.data =data; + this.left = null; + this.right = null; + } +} + +class BinaryTree { + constructor() { + this.root = null; + this.traversal = []; + } + + breadthFirst() { + let h = this.getHeight(this.root); + for (let i = 1; i <= h; i++) { + this.traverseLevel(this.root,i); + } + return this.traversal.toLocaleString(); + } + // Compputing the height of the tree + getHeight(root) { + if (root == null) { + return 0; + } else { + let lheight = this.getHeight(root.left); + let rheight = this.getHeight(root.right); + return lheight > rheight ? lheight + 1 : rheight + 1; + } + } + + traverseLevel(node, level){ + if(node == null){ + return; + }else if(level == 1){ + this.traversal.push(node.data); + }else { + this.traverseLevel(node.left, level-1); + this.traverseLevel(node.right, level-1) + } + } +} + +let binaryTree = new BinaryTree(); +let root = new Node(7); +root.left = new Node(5); +root.right = new Node(8); +root.left.left = new Node(3); +root.left.right = new Node(6); +root.right.right = new Node(9); +binaryTree.root = root; + +console.log(binaryTree.breadthFirst()); + +// 7 +// / \ +// 5 8 +// / \ \ +// 3 6 9 From 352d571d889ab8fcb42f80faa5492007b8968399 Mon Sep 17 00:00:00 2001 From: gerardubuntu Date: Wed, 7 Oct 2020 17:28:16 +0800 Subject: [PATCH 2/4] Implement BreadthFirstTreeTraversal in JavaScript --- Trees/BreadthFirstTreeTraversal.js | 66 +++++++++++++++--------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Trees/BreadthFirstTreeTraversal.js b/Trees/BreadthFirstTreeTraversal.js index c7ab4b0600..9db0c223fc 100644 --- a/Trees/BreadthFirstTreeTraversal.js +++ b/Trees/BreadthFirstTreeTraversal.js @@ -4,47 +4,47 @@ */ class Node { - constructor(data) { - this.data =data; - this.left = null; - this.right = null; - } + constructor(data) { + this.data = data; + this.left = null; + this.right = null; + } } class BinaryTree { - constructor() { - this.root = null; - this.traversal = []; - } + constructor () { + this.root = null; + this.traversal = []; + } - breadthFirst() { - let h = this.getHeight(this.root); - for (let i = 1; i <= h; i++) { - this.traverseLevel(this.root,i); - } - return this.traversal.toLocaleString(); + breadthFirst () { + const h = this.getHeight(this.root); + for (let i = 1; i <= h; i++) { + this.traverseLevel(this.root, i); } - // Compputing the height of the tree - getHeight(root) { - if (root == null) { - return 0; - } else { - let lheight = this.getHeight(root.left); - let rheight = this.getHeight(root.right); - return lheight > rheight ? lheight + 1 : rheight + 1; - } + return this.traversal.toLocaleString(); + } + // Compputing the height of the tree + getHeight (root) { + if (root == null) { + return 0; + } else { + let lheight = this.getHeight(root.left); + let rheight = this.getHeight(root.right); + return lheight > rheight ? lheight + 1 : rheight + 1; } + } - traverseLevel(node, level){ - if(node == null){ - return; - }else if(level == 1){ - this.traversal.push(node.data); - }else { - this.traverseLevel(node.left, level-1); - this.traverseLevel(node.right, level-1) - } + traverseLevel (node, level) { + if (node == null) { + return + } else if (level == 1) { + this.traversal.push(node.data); + } else { + this.traverseLevel(node.left, level - 1); + this.traverseLevel(node.right, level - 1); } + } } let binaryTree = new BinaryTree(); From 9cb383bccc69e4079a29e8ebe59675e75fdb2b4d Mon Sep 17 00:00:00 2001 From: gerardubuntu Date: Wed, 7 Oct 2020 17:46:03 +0800 Subject: [PATCH 3/4] Implement BreadthFirstTreeTraversal in JavaScript --- Trees/BreadthFirstTreeTraversal.js | 58 +++++++++++++++--------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Trees/BreadthFirstTreeTraversal.js b/Trees/BreadthFirstTreeTraversal.js index 9db0c223fc..944f2d83fa 100644 --- a/Trees/BreadthFirstTreeTraversal.js +++ b/Trees/BreadthFirstTreeTraversal.js @@ -4,59 +4,59 @@ */ class Node { - constructor(data) { - this.data = data; - this.left = null; - this.right = null; + constructor (data) { + this.data = data + this.left = null + this.right = null } } class BinaryTree { constructor () { - this.root = null; - this.traversal = []; + this.root = null + this.traversal = [] } breadthFirst () { - const h = this.getHeight(this.root); + const h = this.getHeight(this.root) for (let i = 1; i <= h; i++) { - this.traverseLevel(this.root, i); + this.traverseLevel(this.root, i) } - return this.traversal.toLocaleString(); + return this.traversal.toLocaleString() } // Compputing the height of the tree - getHeight (root) { - if (root == null) { - return 0; + getHeight (node) { + if (node == null) { + return 0 } else { - let lheight = this.getHeight(root.left); - let rheight = this.getHeight(root.right); - return lheight > rheight ? lheight + 1 : rheight + 1; + const lheight = this.getHeight(node.left) + const rheight = this.getHeight(node.right) + return lheight > rheight ? lheight + 1 : rheight + 1 } } traverseLevel (node, level) { - if (node == null) { - return - } else if (level == 1) { - this.traversal.push(node.data); + if (level === 1 && node !== null) { + this.traversal.push(node.data) } else { - this.traverseLevel(node.left, level - 1); - this.traverseLevel(node.right, level - 1); + if (node !== null ) { + this.traverseLevel(node.left, level - 1) + this.traverseLevel(node.right, level - 1) + } } } } -let binaryTree = new BinaryTree(); -let root = new Node(7); -root.left = new Node(5); -root.right = new Node(8); -root.left.left = new Node(3); -root.left.right = new Node(6); -root.right.right = new Node(9); +const binaryTree = new BinaryTree() +const root = new Node(7) +root.left = new Node(5) +root.right = new Node(8) +root.left.left = new Node(3) +root.left.right = new Node(6) +root.right.right = new Node(9) binaryTree.root = root; -console.log(binaryTree.breadthFirst()); +console.log(binaryTree.breadthFirst()) // 7 // / \ From 4df86790c5e4ed787f5962624391377a17e40612 Mon Sep 17 00:00:00 2001 From: gerardubuntu Date: Wed, 7 Oct 2020 17:50:54 +0800 Subject: [PATCH 4/4] Implement BreadthFirstTreeTraversal in JavaScript --- Trees/BreadthFirstTreeTraversal.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Trees/BreadthFirstTreeTraversal.js b/Trees/BreadthFirstTreeTraversal.js index 944f2d83fa..f81cf24e63 100644 --- a/Trees/BreadthFirstTreeTraversal.js +++ b/Trees/BreadthFirstTreeTraversal.js @@ -24,6 +24,7 @@ class BinaryTree { } return this.traversal.toLocaleString() } + // Compputing the height of the tree getHeight (node) { if (node == null) { @@ -39,7 +40,7 @@ class BinaryTree { if (level === 1 && node !== null) { this.traversal.push(node.data) } else { - if (node !== null ) { + if (node !== null) { this.traverseLevel(node.left, level - 1) this.traverseLevel(node.right, level - 1) } @@ -54,7 +55,7 @@ root.right = new Node(8) root.left.left = new Node(3) root.left.right = new Node(6) root.right.right = new Node(9) -binaryTree.root = root; +binaryTree.root = root console.log(binaryTree.breadthFirst())