SAI || Vorlesungen im SS 97 || Programmieren II / Allg. Informatik II || Übungen

Übungen zu Programmieren II / Allg. Informatik II SS 97
Blatt 9 (26.06.97 - 03.07.97)


Aufgabe 9 (20 Punkte)

Gegeben ist das folgende Definitionsmodul für einen Binärbaum:

DEFINITION MODULE balTree;
(*auf die Verwendung von hidden types wird hier verzichtet*)
  TYPE
	Baum = POINTER TO Knoten;
	Knoten = RECORD
			inhalt: CARDINAL;
			anzahl: CARDINAL;
			(* Anzahl im Baum, dessen Wurzel der
			 * gegebene Knoten ist
			 *)
			links, rechts: Baum;
	         END;

  PROCEDURE baueBaum(anz: CARDINAL):Baum;
  (* anz: Anzahl der Knoten; Return-Wert ist
   * Zeiger auf die Wurzel des konstruierten Baumes
   * liest von der Standardeingabe - erste Zahl ist die
   * Anzahl der Elemente - und schreibt die gelesenen Zahl in
   *  die Komponente ``inhalt''
   *)

  PROCEDURE druckeBaum(wurzel: Baum; einr: CARDINAL);
  (* gibt Baum (Komponente ``inhalt'') in horizontaler Form aus;
   *  einr ist die Einrueckstufe
   *)
  
  PROCEDURE druckeAlles(wurzel: Baum; einr: CARDINAL);
  (* gibt Baum (Komponenten ``inhalt'' und ``anzahl'') 
   * in der Form (``inahlt'',``anzahl'')
   *  in horizontaler Form aus;
   *  einr ist die Einrueckstufe
   *)

  PROCEDURE anzahlBlaetter(wurzel: Baum):CARDINAL;
  (* liefert rekursiv die Anzahl der Blaetter im Baum ``wurzel''*)

  PROCEDURE Summe(wurzel: Baum): CARDINAL;
  (* liefert rekursiv die Summe der Knoteninhalte *)

  PROCEDURE bestimmeKnotenzahl( VAR wurzel: Baum);
  (* traegt in jedem Knoten in die Komponente ``anzahl''
   * die Anzahl der Knoten in dem Teilbaum ein, dessen
   * Wurzel der gegebene Knoten ist - rekursiv
   *)

END balTree.
Im zugehörigen IMPLEMENTATION MODULE sind die Prozeduren ``baueBaum'' und ``druckeBaum'' bereits implementiert und können ebenso wie das MAIN MODULE verwendet werden; d.h., es sind die Prozeduren ``druckeAlles'', ``anzahlBlaetter'', ``Summe'' und ``bestimmeKnotenzahl'' zu implementieren.

Die Module stehen im Katalog /www/thales/ftp/pub/vorlesungen/ss97/prog/blatt9 zur Verfügung und können, müssen aber nicht verwendet werden.

Viel Erfolg!


SAI || Vorlesungen im SS 97 || Programmieren II / Allg. Informatik II || Übungen

Franz Schweiggert, 25.06.1997