private BinaryNode <T> Remove(T x, BinaryNode <T> root) { if (root == null) { throw new NoNullAllowedException("Item does not exist"); } if (x.CompareTo(root.getElement()) < 0) { root.setLeft(Remove(x, root.getleft())); } else if (x.CompareTo(root.getElement()) < 0) { root.setRight(Remove(x, root.getRight())); } else if (root.getleft() != null && root.getRight() != null) { root.setElement(FindMin(root.getRight()).getElement()); root.setRight(RemoveMin(root.getRight())); } else { root = (root.getleft() != null) ? root.getleft() : root.getRight(); } return(root); }
public T retrieve() { if (current == null) { throw new Exception("Element not found!"); } return(current.getElement()); }
private T elementAt(BinaryNode <T> t) { if (t != null) { return(t.getElement()); } return(default(T)); }
private BinaryNode <T> Find(T x, BinaryNode <T> root) { while (root != null) { if (x.CompareTo(root.getElement()) < 0) { root = root.getleft(); } else if (x.CompareTo(root.getElement()) > 0) { root = root.getRight(); } else { return(root); } } return(null); }