diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java index 2c1a239..1e4ce90 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java @@ -134,11 +134,38 @@ public class BinaryHeap> implements PriorityQueue { this.arraySet(index, x); this.percolateUp(index); } - + @Override public void remove(E x) throws ElementNotFoundException { - // TODO: + int i; + E lastE; + boolean notFound = true; + for(i = 0; i< this.currentSize; i++) + { + if(array.get(i).equals(x)) + { + lastE = array.get(--currentSize); + this.arraySet(i, lastE); + notFound = false; + if(lastE.compareTo(x)>0) + { + percolateDown(i); + } + else + { + percolateUp(i); + } + break; + } + } + if(notFound) + { + throw new ElementNotFoundException(x); + } } + + + @Override public E findMin() throws EmptyPriorityQueueException {