Поместите значение в кучу.Все, что вам нужно сделать, это изменить значение, а затем восстановить инвариант кучи, увеличивая или уменьшая значение.
Напомним, что куча - это, по сути, двоичное дерево, каждый узел которого больше, чем оба его дочерних узла..
Таким образом, если вы увеличиваете значение узла, вы проверяете, стало ли оно больше, чем его родитель, и, если это так, меняете их местами, затем повторяете вытягивание узла к корню деревьев, пока узел больше не будет нуждаться вswapped.
если вы уменьшаете значение узла, то если вы теперь меньше, чем самый большой из ваших двух дочерних свопов.Повторяйте подталкивание узла к листьям деревьев, пока вам больше не нужно менять местами.