package Heap;
public class HeapModule {
public static interface Heap {
Heap left();
Heap right();
T data();
int rank();
boolean isEmpty();
int size();
@Override
String toString();
}
public static class NonEmptyHeap implements Heap {
public Heap left;
public Heap right;
public T data;
public int rank;
public NonEmptyHeap(T x, Heap a, Heap b) {
this(0, x, a, b);
}
public NonEmptyHeap(int r, T x, Heap a, Heap b) {
rank = r;
data = x;
left = a;
right = b;
}
@Override
public Heap left() {
return left;
}
@Override
public Heap right() {
return right;
}
@Override
public T data() {
return data;
}
@Override
public int rank() {
return rank;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public int size(){
return 1 + left.size() + right.size();
}
}
public static final Heap