public Node<T> getNode(T value) {
    if (value == null) {
      return null;
    }
    Node<T> node = root;
    while (node != null) {
      int delta = compare(node.getValue(), value);
      if (delta < 0) {
        node = node.getRight();
      } else if (delta > 0) {
        node = node.getLeft();
      } else {
        break;
      }
    }
    return node;
  }