phpbar.de logo

Mailinglisten-Archive

[php] Passender Allgorithmus zum Baumkinder berechnen?

[php] Passender Allgorithmus zum Baumkinder berechnen?

Marc Linke php_(at)_phpcenter.de
Mon, 14 May 2001 13:38:40 +0200


----- Original Message -----
From: "Tobias Orterer" <tobias.orterer_(at)_iat-matrix.de>
To: <php_(at)_phpcenter.de>
Sent: Monday, May 14, 2001 1:20 PM
Subject: Re: [php] Passender Allgorithmus zum Baumkinder berechnen?


> ist das nicht das was du suchst?

Nein, ich habe ein array:

n     name              id     tiefe   topid

1  -+ Vater1            (1)     (0)     (0)
    |
2   +-+ Kind1          (12)     (1)     (1)
    |
3   +-+ Kind2          (13)     (1)     (1)
    | |
4   | +-+ Enkel1       (54)     (2)    (13)
...

array(
1 => array ( "name"=>"Vater1", "id"=> 1, "tiefe"=>0, "topid"=>0 ),
2 => array ( "name"=>"Kind1",  "id"=>12, "tiefe"=>1, "topid"=>1 ),
3 => array ( "name"=>"Kind2",  "id"=>13, "tiefe"=>1, "topid"=>1 ),
...

Und suche das array:

n     name              id     tiefe   topid       childs

1  -+ Vater1            (1)     (0)     (0)     (12,13,54...)
    |
2   +-+ Kind1          (12)     (1)     (1)     ()
    |
3   +-+ Kind2          (13)     (1)     (1)     (54...)
    | |
4   | +-+ Enkel1       (54)     (2)    (13)     ()
...

array(
1 => array ( "name"=>"Vater1", "id"=> 1, "tiefe"=>0,
             "topid"=>0, childs=>array(12,13,54...) ),
2 => array ( "name"=>"Kind1",  "id"=>12, "tiefe"=>1,
             "topid"=>1, childs=>array() ),
3 => array ( "name"=>"Kind2",  "id"=>13, "tiefe"=>1,
             "topid"=>1, childs=>array(54...) ),
...


> also normal sollte man das was du haben willst daraus baun können also
> aus der class.static_tree.php
> bzw. mr. traffic-eye stell die doch mal als phps auf die site ;o)

Der baum ist huebsch, ich suche aber nur nach dem
passenden allgorithmus um aus meinem ersten array das zweite
zu erzeugen.

Simpelste moeglichkeit waere:

- array in ein hilfsarray $h umformen das nach "id" indiziert ist.
- $h per forschleife durchlaufen:
  - fuer jeden eintrag in einer rekursiven funktion alle
    darunter liegenden eintraege ermitteln und zurueck geben.
  - ergebnis eintragen und weiter...
- $h zurueckwandeln

Das ist aber imho wirklich ein extrem schlechter
allgorithmus um das ergebnis zu bekommen - das sollte
sich viel schneller machen lassen ohne zig mal die
selben zweige des baumes in der rekursion durchlaufen
zu muessen. Nur wie? Was ist ein sinnvoller ansatz?




_________________________________________________________
Do You Yahoo!?
Get your free _(at)_yahoo.com address at http://mail.yahoo.com



php::bar PHP Wiki   -   Listenarchive