marabu hat schon Recht: Natürlich kann man das Array nicht einfach so sortieren, denn der Index enthält ja die Information des Pfades für den Buchstaben. Sein Vorschlag ist hinsichtlich der Laufzeit optimal, aber es geht auch so (die Funktion fügt ein Zeichen anhand des Pfades in einen Baum ein):
Delphi-Quellcode:
Procedure BildeBaum (aChar : Char; aPfad :
String; aBaum : TBinaerBaum);
Begin
If aPfad='
'
Then
aBaum.Zeichen := aChar
Else If aPfad[1]='
.'
Then Begin
If not Assigned (aBaum.Links)
Then aBaum.Links := TBinaerbaum.Create;
BildeBaum (aChar, Copy (aPfad,2, maxint), aBaum.Links)
End
Else If aPfad[1]='
-'
Then Begin
If not Assigned (aBaum.Rechts)
Then aBaum.Rechts := TBinaerbaum.Create;
BildeBaum (aChar, Copy (aPfad,2, maxint), aBaum.Rechts)
End
Else Raise Exception.Create('
Ungültige Pfadangabe');
End;
Ist es eine Hausaufgabe? Dann musst Du das auch verstehen!
@Relicted: Nee, nur weil Buchstaben in einem binären Baum sind, muss das noch kein Huffman sein (kann aber).