mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
Implement BreadthFirstTreeTraversal in JavaScript (#435)
* Implement BreadthFirstTreeTraversal in JavaScript * Implement BreadthFirstTreeTraversal in JavaScript * Implement BreadthFirstTreeTraversal in JavaScript * Implement BreadthFirstTreeTraversal in JavaScript
This commit is contained in:

committed by
GitHub

parent
4e543eb92c
commit
9eac58e6cb
66
Trees/BreadthFirstTreeTraversal.js
Normal file
66
Trees/BreadthFirstTreeTraversal.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
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 () {
|
||||||
|
const 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 (node) {
|
||||||
|
if (node == null) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
const lheight = this.getHeight(node.left)
|
||||||
|
const rheight = this.getHeight(node.right)
|
||||||
|
return lheight > rheight ? lheight + 1 : rheight + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
traverseLevel (node, level) {
|
||||||
|
if (level === 1 && node !== null) {
|
||||||
|
this.traversal.push(node.data)
|
||||||
|
} else {
|
||||||
|
if (node !== null) {
|
||||||
|
this.traverseLevel(node.left, level - 1)
|
||||||
|
this.traverseLevel(node.right, level - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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())
|
||||||
|
|
||||||
|
// 7
|
||||||
|
// / \
|
||||||
|
// 5 8
|
||||||
|
// / \ \
|
||||||
|
// 3 6 9
|
Reference in New Issue
Block a user