diff --git a/Data Structures/Tree/Binary Search Tree.js b/Data Structures/Tree/Binary Search Tree.js new file mode 100644 index 0000000000..e9d7ed53ae --- /dev/null +++ b/Data Structures/Tree/Binary Search Tree.js @@ -0,0 +1,104 @@ +/*Binary Search Tree!! +* +* Nodes that will go on the Binary Tree. +* They consist of the data in them, the node to the left, the node +* to the right, and the parent from which they came from. +* +* A binary tree is a data structure in which an element +* has two successors(children). The left child is usually +* smaller than the parent, and the right child is usually +* bigger. +*/ + +// Node in the tree +function Node(val) { + this.value = val; + this.left = null; + this.right = null; +} + +// Search the tree for a value +Node.prototype.search = function(val) { + if (this.value == val) { + return this; + } else if (val < this.value && this.left != null) { + return this.left.search(val); + } else if (val > this.value && this.right != null) { + return this.right.search(val); + } + return null; +} + +// Visit a node +Node.prototype.visit = function() { + // Recursively go left + if (this.left != null) { + this.left.visit(); + } + // Print out value + console.log(this.value); + // Recursively go right + if (this.right != null) { + this.right.visit(); + } +} + +// Add a node +Node.prototype.addNode = function(n) { + if (n.value < this.value) { + if (this.left == null) { + this.left = n; + } else { + this.left.addNode(n) + } + } else if (n.value > this.value) { + if (this.right == null) { + this.right = n; + } else { + this.right.addNode(n); + } + } +} + +function Tree() { + // Just store the root + this.root = null; +} + +// Inorder traversal +Tree.prototype.traverse = function() { + this.root.visit(); +} + +// Start by searching the root +Tree.prototype.search = function(val) { + var found = this.root.search(val); + if(found === null) + { + console.log(val + " not found"); + } + else{ + console.log("Found:"+found.value); + } +} + +// Add a new value to the tree +Tree.prototype.addValue = function(val) { + var n = new Node(val); + if (this.root == null) { + this.root = n; + } else { + this.root.addNode(n); + } +} + +//Implementation of BST +var bst = new Tree(); +bst.addValue(6); +bst.addValue(3); +bst.addValue(9); +bst.addValue(2); +bst.addValue(8); +bst.addValue(4); +bst.traverse(); +bst.search(8);
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: