Witam Wszystkich.
Mam dziwny problem z funkcją przeszukującą drzewo metodą preorder
type
PInod = ^ TInod;
TInod = record
wartosc : string;
gora :PInod;
lewo :PInod;
prawo:PInod;
end;
var
Inod : PInod;
S : String;
function szukaj( var Tree : PInod ;S : string):PInod;
begin
if Tree.wartosc = S then szukaj := Tree
else
begin
if Tree.lewo <> nil then szukaj:= szukaj(Tree.lewo , S );
if Tree.prawo <> nil then szukaj := szukaj( Tree.prawo , S );
end;
end;
w programie funkcja jest wywoływana :
Inod := szukaj(Inod, S);
I wszystko działa prawidłowo , jednak ja potrzebuję aby wartosc była typu byte ( lub ShortInt ) ale po zmianie typu czyli :
type
PInod = ^ TInod;
TInod = record
wartosc : byte;
gora :PInod;
lewo :PInod;
prawo:PInod;
end;
var
Inod : PInod;
S : byte;
function szukaj( var Tree : PInod ;S : byte):PInod;
begin
if Tree.wartosc = S then szukaj := Tree
else
begin
if Tree.lewo <> nil then szukaj:= szukaj(Tree.lewo , S );
if Tree.prawo <> nil then szukaj := szukaj( Tree.prawo , S );
end;
end;
funkcja przestaje działać i zwraca jako wskaznik przypadkową wartość , dodam , że w obu przypadkach nie ma błędu przy kompilacji .
Gdzie tkwi problem ?
Wielkie dzięki za jakąkolwiek odpowiedź .