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;