console
<script>
function Node(data, left, right){
this.data = data;
this.left = left;
this.right = right;
}
Node.prototype.show = function(){
return this.data;
}
function BinaryTrees(){
this.root = null;
}
BinaryTrees.prototype = {
insert: function(data){
var n = new Node(data, null, null);
if (this.root == null) {
this.root = n;
}
else {
var current = this.root;
var parent;
while (true) {
parent = current;
if (data < current.data) {
current = current.left;
if (current == null) {
parent.left = n;
break;
}
} else {
current = current.right;
if (current == null) {
parent.right = n;
break;
}
}
}
}
},
inOrder: function(node) {
if (!(node == null)) {
this.inOrder(node.left);
document.writeln(node.show() + " ");
this.inOrder(node.right);
}
},
preOrder: function(node) {
if (!(node == null)) {
document.writeln(node.show() + " ");
this.preOrder(node.left);
this.preOrder(node.right);
}
},
Postorder: function(node){
if (!(node == null)) {
this.preOrder(node.left);
this.preOrder(node.right);
document.writeln(node.show() + " ");
}
},
getMin: function(){
var current = this.root;
while(!(current.left == null)){
current = current.left;
}
return current.data;
},
getMax: function(){
var current = this.root;
while (!(current.right == null)) {
current = current.right;
}
return current.data;
},
find: function(data){
var current = this.root;
while(current != null){
if(current.data == data){
return current;
} else if(data < current.data){
current = current.left;
} else {
current = current.right;
}
}
return null;
},
remove : function(data) {
this.root = removeNode(this.root, data);
},
removeNode: function(node, data) {
if (node == null) {
return null;
}
if (data == node.data) {
if (node.left == null && node.right == null) {
return null;
}
if (node.left == null) {
return node.right;
}
if (node.right == null) {
return node.left;
}
var tempNode = getSmallest(node.right);
node.data = tempNode.data;
node.right = removeNode(node.right, tempNode.data);
return node;
} else if (data < node.data) {
node.left = removeNode(node.left, data);
return node;
} else {
node.right = removeNode(node.right, data);
return node;
}
}
}
var nums = new BinaryTrees();
nums.insert(23);
nums.insert(45);
nums.insert(16);
nums.insert(37);
nums.insert(3);
nums.insert(99);
nums.insert(22);
console.log(nums)
document.writeln("Inorder traversal: ");
nums.inOrder(nums.root);
document.writeln("</br>")
document.writeln("Preorder traversal: ");
nums.preOrder(nums.root);
document.writeln("</br>")
document.writeln("Postorder traversal: ");
nums.Postorder(nums.root);
document.writeln("</br>")
var min = nums.getMin();
document.writeln("The minimun value: " + min);
document.writeln("</br>")
var max = nums.getMax();
document.writeln("The maximun value: " + max);
document.writeln("</br>")
var num = 1;
var found = nums.find(num);
if(found != null){
document.writeln(num + " in tree")
} else {
document.writeln(num + " not found in tree")
}
</script>