private void trickleDownMin(int i) {
		if(currentSize < 2*i) return;
		int smallest = smallestOffsprings(i);
		if(arr[i] < arr[smallest]) return;
		int temp = arr[i];
		arr[i] = arr[smallest];
		arr[smallest] = temp;
		if(smallest >= 4*i) {
			int parent = smallest / 2;
			if(arr[parent] < arr[smallest]) {
				temp = arr[parent];
				arr[parent] = arr[smallest];
				arr[smallest] = temp;
			}
			trickleDownMin(smallest);
		}
	}