[Cologne-pm] table zu tree konvertieren

Johannes Huettemeister j.huettemeister at googlemail.com
Mon Nov 20 11:34:36 PST 2006


Hallo,

2006/11/20, A. Pagaltzis <pagaltzis at gmx.de>:
>
>
> > push @{$h{$parent_id}}, $parent_id;



Ich glaube, du meinst eher
>
>     push @{ $h{ $parent_id } }, $node_id if $parent_id != -1;
>
> Bzw., der Ordnung und Verständlichkeit halber:
>
>     push @{ $children{ $parent_id } }, $node_id if $parent_id != -1;


klar:-)



>
> Oder du verzichtest auf den zweiten Hash und sagst, dass der 0te
> Eintrag im Array eines Knotens immer auf den Mutterknoten weist.
> Massiv ändert sich der Code dadurch nicht:
>
>     $node{ $parent_id } ||= [ undef ];
>     push @{ $node{ $parent_id } }, $node_id if $parent_id != -1;
>     $node{ $node_id }[ 0 ] = $parent_id;



Warum geht das? Ich meine, wenn du die parent_id an Stell 0 setzt,
ueberschreibst Du doch eventuelle Kinder, das jedes Kind ja wiederum parent
sein kann.

Die erste Zeile sorgt dafür, dass das Array im Mutterknoten
> mindestens einen Eintrag hat, bevor das `push` drauf losgelassen
> wird, damit die Indizes auch immer stimmen.
>
> > Jetzt muß ich irgendwie rekursiv einen neuen hash bauen.



> Mir ist nicht klar, warum…




Tja, ich hab mir die Tabelle immer als Tree vorgestellt und ueberlegt, wie
ich Eine Datenstruktur aus n geschachtelten Hashes und Arrays erzeugen kann.
Deswegen war mir Michaels Ansatz total klar, aber am Sortieren waere ich
haengen geblieben: was macht man mit childs, wenn das passende parent noch
nicht gefunden ist? Was anderes als immer wieder ueber die Liste laufen,
Node finden fuer die ein Parent existiert, aus der Liste nehmen und in den
Tree eingehaengt fiel mir nicht ein.


Jetzt brauchte ich uebrigens doch keinen Tree ueber die Nodes. Nur die Nodes
ohne parent musste ich finden, also banal. Aber da das der table in der
Datenbank ist mit dem ich am haefigsten zu tun habe, ist das sehr guenstig
solche Skripte auf Lager zu haben.

danke an Alle!

cheers Johannes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/cologne-pm/attachments/20061120/3f3c0ecf/attachment.html 


More information about the Cologne-pm mailing list