Skip to content

Instantly share code, notes, and snippets.

@jremmen
Created June 12, 2013 20:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jremmen/5769033 to your computer and use it in GitHub Desktop.
Save jremmen/5769033 to your computer and use it in GitHub Desktop.
js: binary tree objects
var Node = function(o){
this.key = o.key;
this.data = o.data;
this.left = {};
this.right = {};
}
var BinaryTree = function(o) {
this.tree = o.tree;
this.insert = function(node) {
function iter(tree) {
if(node.key > tree.key) {
if(Object.keys(tree.right).length === 0) tree.right = node;
else iter(tree.right);
} else {
if(Object.keys(tree.left).length === 0) tree.left = node;
else iter(tree.left);
}
}
return iter(this.tree);
};
this.delete = function(node) {
};
this.search = function(key) {
function iter(node) {
if(Object.keys(node).length === 0) return false;
if(key === node.key) return node;
else if(key > node.key) {
return iter(node.right);
}
else return iter(node.left);
}
return iter(this.tree);
};
}
tree = new BinaryTree({tree: new Node({key: 100, data: 'foo'})});
tree.insert(new Node({key: 50, data: 'bar'}));
tree.insert(new Node({key: 120, data: 'gaz'}));
tree.search(100);
tree.search(50);
tree.search(120);
tree.search(0); // false
tree.search(200); // false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment