Читайте также:
|
|
Change(t^.left);{Идем в левое поддерево.}
Change(t^.right);{Затем в правое поддерево.}
If (t^.left<> nil) And (t^.data<t^.left^.data)
Then Swap(t^.data,t^.left^.data); {Записываем максимальное значение в корень поддерева.}
If (t^.right<> nil) And (t^.data<t^.right^.data)
Then Swap(t^.data,t^.right^.data);
End;
End;,
На рис. 7.4 приведен пример дерева и его изменение в процессе работы процедуры Change с ним.
Рис. 7.4. Обход двоичного дерева с изменением значения ключей по принципу кучи
На рис. 7.5 приведен пример преобразования двоичного дерева (h =3) в кучу с помощью данной логики. Второе дерево – это результат работы Change на первой итерации (h =1), третье дерево получается после второй итерации (h =2), и, наконец, четвертое дерево – после третьей итерации (h =3).
Рис. 7.5. Пример формирования кучи
Procedure Push(t:pt);
Var v,w,q:pt;{Вспомогательные переменные v, w введены для наглядности (обозримости) текста процедуры.}
Begin
Дата добавления: 2015-07-11; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Очереди с приоритетами | | | If t^.data<q^.data Then Begin |