@Override
    public int dequeue() {
        int biggest = this.heap[0]; // biggest is at the root
        this.size--; // one less in the heap
        this.heap[0] = this.heap[this.size]; // move last leaf to top
        bubbleDown(); // fix the heap
        return biggest;
    }