Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Deklarujte dva polymorfní objekty. První implementuje uspořádaný binární strom řetězců, kde platí, že řetězce v levém podstromu jsou podle abecedy dříve než v daném uzlu, hodnoty v pravém podstromu jsou později než v daném uzlu. Druhý objekt se při vkládání hodnot do stromu rozhoduje podobně, ale jen podle posledních tří znaků řetězců. Implementujte metody nutné k vložení řetězců do stromů a k jejich seřazenému výpisu.
- Na tuto otázku můžete odpovědět libovolně dlouhým textem. Odpověď bude vyhodnocena zkoušejícím ručně.}
- type
- TypData = string;
- UkStrom = ^Clen;
- Clen = record
- D: TypData;
- levy,pravy: UkStrom;
- end;
- Strom1 = object
- UkPrvni: UkStrom;
- UkAkt: UkStrom;
- constructor Start;
- procedure vloz(var co:string);virtual;
- procedure vypis(co:UkStrom);
- //dalsi metody jako init...
- end;
- Strom2 = object(Strom1)
- constructor Start; //naplneni VMT
- procedure vloz();virtual;
- end;
- procedure strom1.vloz(var T: UkStrom; E: TypData);
- begin
- if T=nil then begin
- new(T);
- T^.D:=E;
- T^.levy:=nil;
- T^.pravy:=nil
- end else
- if ord(E[1])<=ord(T^.D[1]) then vloz(T^.levy, E)
- else vloz(T^.pravy, E)
- end;
- procedure strom2.vloz(var T: UkStrom; E: TypData);
- begin
- if T=nil then begin
- new(T);
- T^.D:=E;
- T^.levy:=nil;
- T^.pravy:=nil
- end else
- if lenght(co[1]) - 3)<=(lenght(Clen.D[1]) -3) then vloz(T^.levy, E) //vkladani podle jednoho pismene - nebyl u zkousky cas dodelat :-)
- else vloz(T^.pravy, E)
- end;
- procedure Strom1.vypis(T: UkStrom);
- begin if T<>nil then begin
- vypis(T^.levy);
- writeln(T^.D); //inorder
- vypis(T^.pravy)
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement