ajout: Implémentation de BinaryHeap#remove(E x)

This commit is contained in:
Brendan Saint Germes 2026-04-14 18:17:05 +02:00
parent 63fb8fa6af
commit a35c883c44

View file

@ -1,6 +1,9 @@
package org.insa.graphs.algorithm.utils;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.Stack;
/**
* Implements a binary heap containing elements of type E. Note that all comparisons are
@ -134,7 +137,34 @@ public class BinaryHeap<E extends Comparable<E>> implements PriorityQueue<E> {
@Override
public void remove(E x) throws ElementNotFoundException {
// TODO:
if (this.isEmpty()) throw new ElementNotFoundException(x);
Stack<Integer> stack = new Stack<>();
stack.add(0);
while (!stack.isEmpty()) {
int i = stack.pop();
System.out.println("i=" + i);
E current = this.array.get(i);
int comp = current.compareTo(x);
if (comp == 0) {
// on a trouvé notre élément
this.currentSize--;
if (this.currentSize > 0) {
E lastItem = this.array.get(this.currentSize);
this.arraySet(i, lastItem);
this.percolateDown(i);
this.percolateUp(i);
}
return;
} else {
int indLeft = indexLeft(i);
if (indLeft < this.currentSize) stack.push(indLeft);
int indRight = indLeft+1;
if (indRight < this.currentSize) stack.push(indRight);
}
}
throw new ElementNotFoundException(x);
}
@Override