Try and google "binary tree java" and you will get loads of hits...
This is a simple implementation but I am sure there are better ones that handle balancing better. Cheers Tim public class BinaryTree { public static void main(String[] args) { BinaryTree bt = new BinaryTree(); for (int i = 0; i < 10000; i++) { bt.insert("" + i); } System.out.println(bt.lookup("999")); System.out.println(bt.lookup("100")); System.out.println(bt.lookup("a")); // should be null } private Node root; private static class Node { Node left; Node right; String value; public Node(String value) { this.value = value; } } public String lookup(String key) { return (lookup(root, key)); } private String lookup(Node node, String value) { if (node == null) { return (null); } if (value.equals(node.value)) { return (node.value); } else if (value.compareTo(node.value) < 0) { return (lookup(node.left, value)); } else { return (lookup(node.right, value)); } } public void insert(String value) { root = insert(root, value); } private Node insert(Node node, String value) { if (node == null) { node = new Node(value); } else { if (value.compareTo(node.value) <= 0) { node.left = insert(node.left, value); } else { node.right = insert(node.right, value); } } return (node); } }