floor函数
// 递归算法 返回比e小的最接近e的数
public E floor(E e) {
if (size == 0 || e.compareTo(minimum()) < 0) {
return null;
}
return floor(root, e).e;
}
private Node floor(Node node, E e) {
if (node == null) return null;
if (e.compareTo(node.e) == 0) {
return node;
}
if (e.compareTo(node.e) < 0) {
return floor(node.left, e);
}
Node tempNode = floor(node.right, e);
if (tempNode != null) return tempNode;
return node;
}
ceil函数
// 递归算法 返回比e大的最接近e的数
public E ceil(E e) {
if (size == 0 || e.compareTo(maximum()) > 0) {
return null;
}
return ceil(root, e).e;
}
private Node ceil(Node node, E e) {
if (node == null) return null;
if (e.compareTo(node.e) == 0) {
return node;
}
if (e.compareTo(node.e) > 0) {
return ceil(node.right, e);
}
Node tempNode = ceil(node.left, e);
if (tempNode != null) {
return tempNode;
}
return node;
}