Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pretraga niza (trazenje krajnjih potomaka)

[es] :: Art of Programming :: Pretraga niza (trazenje krajnjih potomaka)

[ Pregleda: 1580 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ivan_nedeljkovic
iOS Developer
Beograd

Član broj: 301878
Poruke: 4
217.26.78.*



Profil

icon Pretraga niza (trazenje krajnjih potomaka)21.05.2012. u 15:27 - pre 150 meseci
Iz vise razloga u koje ne bih ulazio imam niz u kom su smesteni koreni elementi, deca, unuci, praunuci.....A povezani su atributima id i parent_id, znaci koreni element ima npr id = 1, a njegova deca imaju svoje id-eve (2,3..) ali ima je parent_id = 1. Potrebno mi je da pronadjem krajnje elemente u nizu koji nemaju svoju decu.
Npr elementi u nizu su:

rb parent_id id
1 -1 1
2 1 2
3 1 3
4 2 4
5 2 5
6 4 6

element sa rednim brojem 1 ima parent parent_id=-1 sto znaci da je to koreni element a njegov id=1. Dva elementa imaju id=1 sto znaci da su to deca korenog elementa itd. Element sa rednim brojem 3 nema vise dece (tj nema elementata ciji je parent_id jednak njegovom id-u).
Problem je sto efikasnije pronaci sve krajnje elemente (u konkretnom primeru to su elementi sa rednim brojevima 3, 5, 6)

Hvala unapred na pomoci :)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1255



+96 Profil

icon Re: Pretraga niza (trazenje krajnjih potomaka)21.05.2012. u 15:55 - pre 150 meseci
Rezerviši jedan bool niz (recimo da se zove is_parent) koji je veličine ulaznog niza (recimo da se ulazni niz zove parent_child). Indeks ovog bool niza je zapravo id. Pretpostavljam da su ovi id brojevi "pitomi", to jest da nema rupa, i najveći id je jednak veličini ulaznog niza. Iteriraj kroz ulazni niz po recimo indeksu ix, i postavi is_parent[parent_child[ix].parent_id] = true. Na kraju rada petlje svi koji su true su nekome roditelji, a svi ostali nisu nikome roditelji, i to su ti koje tražiš.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3510

Jabber: djoka_l


+1486 Profil

icon Re: Pretraga niza (trazenje krajnjih potomaka)21.05.2012. u 15:59 - pre 150 meseci
Napravi niz HasChild čija je dužina ista kao dužina niza sa podacima i incijalizuj ga svim nulama.
Prođi kroz niz sa podacima i za svaki parent_id različit od minus jedan postavi HasChild[parent_id] na 1.
Na kraju će niz HasChild imati 0 na onim mestima koji predstavljaju id elemnta bez dece.
 
Odgovor na temu

[es] :: Art of Programming :: Pretraga niza (trazenje krajnjih potomaka)

[ Pregleda: 1580 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.