| BME Villamosmérnöki és Informatikai Kar
 Műszaki informatika szak  | 
 Nappali tagozat 
2002/2003. tanév, tavaszi félév 
 | 
A kis házi feladat beadása nem kötelező.
datatype itree = L | B of int * itree * itree datatype dir = Left | RightEgy ilyen bináris fában egy csomópont vagy levél (együttesen: faelem) helyének jellemzésére egy ún. kiválasztót használhatunk. A kiválasztó egy olyan lista, amelynek minden eleme a
Left és
Right konstansok egyike. A kiválasztó által megnevezett
faelemet úgy kapjuk, hogy a fa gyökeréből elindulva, a Left
konstans esetén a bal részfára, a Right konstans esetén pedig
a jobb részfára lépünk.
Például a 
B(0, B(1, B(3,L,L),
          L),         
     B(9, B(4,L,L),
          B(0,L,L)))
fában a 0 értékű csomópont kiválasztója [], a
4 értékűé [Right,Left].
A feladat az, hogy egy fenti típusú bináris fában keressük meg egy adott egész számnál (határozottan) nagyobb értékeket a kiválasztójukkal együtt, és ezeket gyűjtsük egy listába.
Írjon SML függvényt  nagyobbak néven,
amely megkeresi egy adott fában egy adott számnál nagyobb értékű
csomópontokat, és ezek értékéből és kiválasztójából álló párokat
tetszőleges sorrendben listába gyűjtve eredményül visszaadja.
Az elvárt eredmény az alábbi típusdeklarációkkal írható le:
type selector = dir list type val_sel = int * selectorA megirandó eljárás fejkommentje:
(* nagyobbak(fa, also): azon (e,k) párokat tetszőleges sorrendben
     tartalmazó lista, amelyekre igaz, hogy a fa fában a k kiválasztó által
     meghatározott faelem egy e értékű csomópont, és e > also.
   nagyobbak : itree * int -> val_sel list
 *)
Ha definiál segédeljárásokat, akkor azokat feltétlenül lássa el fejkommenttel!
Figyelem! A fenti két datatype deklarációt
(az itree és a dir adattípusok deklarációját)
írja bele a megoldását tartalmazó khf-ml2.sml állományba is,
különben a tesztek nem fognak működni!
- nagyobbak(L, 28);
> val it = [] : (int * dir list) list
- nagyobbak(B(0,B(1,L,L),B(2,L,L)), 1);
> val it = [(2, [Right])] : (int * dir list) list
- nagyobbak(B(0,B(1,B(3,L,L),
                    L),
                B(9,B(4,L,L),
                    B(0,L,L))), 2);
> val it = [(3, [Left, Left]), (4, [Right, Left]), (9, [Right])] :
  (int * dir list) list
 khf-ml2.sml néven kell beküldeni a
megoldást. A névben meg kell különböztetni a kis- és nagybetűket.
A programok készülhetnek MS DOS vagy MS Windows alatt is, de Linux operációs rendszer alatt is működniük kell. A beadási határidő május 15., csütörtök 24:00.
A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a 100 pontból).