Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions Binary Tree/BinaryTree.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
public class BinaryTree{

private static class Node {

Item reg ;
Node left , right ;
}

private Node root;
private long comparisons;

public BinaryTree(){
this.root = null;
this.comparisons = 0;
}

public Item search (Item reg){
return this.search(reg , this.root);
}

public void insert(Item reg){
this.root = this.insert(reg , this.root);
}

public long getComparisons(){
return this.comparisons;
}
//search for an Item and count how many comparisons were made.
private Item search(Item reg , Node p){
this.comparisons++;

if(p == null)
return null;

else if(reg.compare(p.reg) < 0)
return search(reg , p.left);

else if(reg.compare(p.reg) > 0)
return search(reg , p.right);

else return p.reg;
}

private Node insert(Item reg , Node p){
if(p == null){
p = new Node();
p.reg = reg;
p.left = null;
p.right = null;
}

else if(reg.compare(p.reg) < 0)
p.left = insert(reg, p.left);
else if(reg.compare(p.reg) > 0)
p.right = insert(reg , p.right);
else System.out.println("Error: This register already exists");

return p;
}
}
25 changes: 25 additions & 0 deletions Binary Tree/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
public class Item {

private int key ;

public Item ( int key ) {
this . key = key ;
}

public int compare ( Item it ) {

Item item = it ;

if ( this . key < item . key )
return -1;

else if ( this . key > item . key )
return 1;

return 0;
}

public int getKey () {
return key ;
}
}
48 changes: 48 additions & 0 deletions Binary Tree/TestBinaryTree.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

import java.util.*;

public class TestBinaryTree {

public static void main(String[] args) {


//You can change the tree that will be used updating the value of variable num (0 to 8)
int num = 8;

int N [] = {1000 , 2000 , 3000 , 4000 , 5000 , 6000 , 7000 , 8000 , 9000};

BinaryTree [] tree = new BinaryTree [9];

tree[num] = new BinaryTree();

//Experiment
ArrayList<Integer> numbers = new ArrayList<Integer>();
//Fill arrayList sorted
for(int i = 0; i < N[num]; i++){
numbers.add(i);
}
//With shuffle the numbers are randomized
Collections.shuffle(numbers);
for(int i = 0; i < N[num]; i++){
Item it = new Item(numbers.get(i));
tree[num].insert(it);
}


long initialTime = System.nanoTime();

Item search = new Item(9003);
tree[num].search(search);
System.out.println("Number of comparisons: "+ tree[num].getComparisons());

long finalTime = System.nanoTime();


//Returns the current value of the system timer, in nanoseconds
System.out.print("Time in ns = ");
System.out.println(finalTime - initialTime);


}

}