Zanima me implementacija funkcije [tt]PARENT( i , B )[/tt] (u sklopu implementacije BTREE pomoću pointera) koja vraća roditelja zadanog člana (ako u čvoru ne čuvamo informaciju tko mu je roditelj, nego samo imamo pointere na djecu).
Pitanje je (naravno) vezano zapravo uz rekurzije; ja sam to ovako zamislio:
[code:1]node PARENT( node i, BTREE B) {
return parent(ROOT(B), i, B);
}
node parent( node i, node trazeno_dijete, BTREE B) {
if(i==LAMBDA) return;
if(LEFT_CHILD(i,B)== trazeno_dijete || RIGHT_CHILD(i,B)== trazeno_dijete) return i;
else {
return parent(LEFT_CHILD(i), trazeno_dijete, B) + parent(RIGHT_CHILD(i), trazeno_dijete, B)
}
}[/code:1]
Kako sam se ja većinom susretao s rekurzivnim f-jama koje su bila tipa [tt]int[/tt], a sad trebam vratiti [tt]pointer[/tt], ne znam koliko je legalno zbrajanje u ovom drugom [tt]return[/tt]u, što treba vratiti ako dođe do lista, tj. njegove djece (ovaj "prazni" [tt]return[/tt])... :?
Hvala unaprijed.
Zanima me implementacija funkcije PARENT( i , B ) (u sklopu implementacije BTREE pomoću pointera) koja vraća roditelja zadanog člana (ako u čvoru ne čuvamo informaciju tko mu je roditelj, nego samo imamo pointere na djecu).
Pitanje je (naravno) vezano zapravo uz rekurzije; ja sam to ovako zamislio:
Kod: | node PARENT( node i, BTREE B) {
return parent(ROOT(B), i, B);
}
node parent( node i, node trazeno_dijete, BTREE B) {
if(i==LAMBDA) return;
if(LEFT_CHILD(i,B)== trazeno_dijete || RIGHT_CHILD(i,B)== trazeno_dijete) return i;
else {
return parent(LEFT_CHILD(i), trazeno_dijete, B) + parent(RIGHT_CHILD(i), trazeno_dijete, B)
}
} |
Kako sam se ja većinom susretao s rekurzivnim f-jama koje su bila tipa int, a sad trebam vratiti pointer, ne znam koliko je legalno zbrajanje u ovom drugom returnu, što treba vratiti ako dođe do lista, tj. njegove djece (ovaj "prazni" return)...
Hvala unaprijed.
|