package me.ramswaroop.common; import java.util.NoSuchElementException; import static java.lang.System.out; /** * Created by IntelliJ IDEA. * User: ramswaroop * Date: 4/19/15 * Time: 6:36 PM * To change this template go to Preferences | IDE Settings | File and Code Templates */ public class BinarySearchTree<E extends Comparable<E>> extends BinaryTree<E> { /** * Inserts a node into the BST. * * @param value */ public BinaryNode<E> put(E value) { return put(root, value); } public BinaryNode<E> put(BinaryNode<E> node, E value) { BinaryNode<E> newNode = new BinaryNode<>(value, null, null); if (node == null) { return root = new BinaryNode<>(value, null, null); } else { if (value.compareTo(node.value) < 0) { if (node.left == null) { return node.left = newNode; } else { return put(node.left, value); } } else { if (node.right == null) { return node.right = newNode; } else { return put(node.right, value); } } } } /** * Returns the node with minimum value. * * @return */ public BinaryNode<E> min() { return min(root); } public BinaryNode<E> min(BinaryNode<E> node) { if (node == null) throw new NoSuchElementException(); if (node.left == null) { return node; } else { return min(node.left); } } public void printList(BinaryNode<E> node) { BinaryNode<E> current = node; out.print("["); if (current == null) { out.println("]"); return; } while (current.right != node) { out.print(current.value + ","); current = current.right; } out.println(current.value + "]"); } }