wrote the tree more object oriented

This commit is contained in:
Christian Bender
2018-03-30 21:15:05 +02:00
parent b9d749acd2
commit c4c5b77420

View File

@ -10,15 +10,17 @@
* bigger. * bigger.
*/ */
// Node in the tree // class Node
function Node(val) { var Node = (function () {
// Node in the tree
function Node(val) {
this.value = val; this.value = val;
this.left = null; this.left = null;
this.right = null; this.right = null;
} }
// Search the tree for a value // Search the tree for a value
Node.prototype.search = function(val) { Node.prototype.search = function (val) {
if (this.value == val) { if (this.value == val) {
return this; return this;
} else if (val < this.value && this.left != null) { } else if (val < this.value && this.left != null) {
@ -27,10 +29,10 @@ Node.prototype.search = function(val) {
return this.right.search(val); return this.right.search(val);
} }
return null; return null;
} };
// Visit a node // Visit a node
Node.prototype.visit = function() { Node.prototype.visit = function () {
// Recursively go left // Recursively go left
if (this.left != null) { if (this.left != null) {
this.left.visit(); this.left.visit();
@ -41,10 +43,10 @@ Node.prototype.visit = function() {
if (this.right != null) { if (this.right != null) {
this.right.visit(); this.right.visit();
} }
} };
// Add a node // Add a node
Node.prototype.addNode = function(n) { Node.prototype.addNode = function (n) {
if (n.value < this.value) { if (n.value < this.value) {
if (this.left == null) { if (this.left == null) {
this.left = n; this.left = n;
@ -58,39 +60,49 @@ Node.prototype.addNode = function(n) {
this.right.addNode(n); this.right.addNode(n);
} }
} }
} };
function Tree() { // returns the constructor
return Node;
}());
// class Tree
var Tree = (function () {
function Tree() {
// Just store the root // Just store the root
this.root = null; this.root = null;
} };
// Inorder traversal // Inorder traversal
Tree.prototype.traverse = function() { Tree.prototype.traverse = function () {
this.root.visit(); this.root.visit();
} };
// Start by searching the root // Start by searching the root
Tree.prototype.search = function(val) { Tree.prototype.search = function (val) {
var found = this.root.search(val); var found = this.root.search(val);
if(found === null) if (found === null) {
{
console.log(val + " not found"); console.log(val + " not found");
} }
else{ else {
console.log("Found:"+found.value); console.log("Found:" + found.value);
} }
} };
// Add a new value to the tree // Add a new value to the tree
Tree.prototype.addValue = function(val) { Tree.prototype.addValue = function (val) {
var n = new Node(val); var n = new Node(val);
if (this.root == null) { if (this.root == null) {
this.root = n; this.root = n;
} else { } else {
this.root.addNode(n); this.root.addNode(n);
} }
} };
// returns the constructor
return Tree;
}());
//Implementation of BST //Implementation of BST
var bst = new Tree(); var bst = new Tree();