void heapifydown(int index) { // System.out.println("m here inside delete" + index+ "heapsize" + heapsize); int min, l, r; state tempstate; // System.out.println("m here inside delete" + index+ "heapsize" + heapsize); l = child(index, 1); r = child(index, 2); min = index; if (l < heapsize && (heap[l].f < heap[min].f)) min = l; if (r < heapsize && (heap[r].f < heap[min].f)) min = r; if (r < heapsize && heap[r].f == heap[min].f) // added loop zhilmil tie { if (heap[r].g < heap[min].g) min = r; } if (l < heapsize && heap[l].f == heap[min].f) // added loop zhilmil tie { if (heap[l].g < heap[min].g) min = l; } if (min != index) { tempstate = heap[index]; heap[index] = heap[min]; heap[min] = tempstate; heapifydown(min); } }
void delete(int index) { heap[index] = heap[heapsize - 1]; // System.out.println("m here inside delete" + index+ "heapsize" + heapsize); heapsize--; // System.out.println("m here inside delete" + index+ "heapsize" + heapsize); heapifydown(index); }