Einführung
in die imperative Programmierung
WS 2018/19
HK10 Aufgabe 4
function istMaxHeap(inRefWurzel: tRefKnoten): Boolean;
{ Gibt true zurück, genau dann wenn der Baum ein Max-Heap ist. }
var linksGroesser, rechtsGroesser: Boolean;
begin
if inRefWurzel = nil then
{Der leere Baum ist ein (leerer) Max-Heap, da er keinen Knoten
mit größerem Kind enthält.}
istMaxHeap := true
else
begin
{Untersuchung des Wurzelknotens und seiner Kinder}
if inRefWurzel^.links = nil then
linksGroesser := false
else
linksGroesser := inRefWurzel^.links^.info > inRefWurzel^.info;
if inRefWurzel^.rechts = nil then
rechtsGroesser := false
else
rechtsGroesser := inRefWurzel^.rechts^.info > inRefWurzel^.info;
linksGroesser := linksGroesser or (not istMaxHeap(inRefWurzel^.links));
rechtsGroesser := rechtsGroesser or (not istMaxHeap(inRefWurzel^.rechts));
istMaxHeap:= not (linksGroesser or rechtsGroesser);
end;
end;