We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

Drzewo z tablicy


mariano
06-05-2009, 22:39
Poniewaz odpowiedzi na php.pl nie sa zbyt blyskotliwe , podpowiem ci: zacznij od posortowania tablicy, potem tworz kazdy wezel drzewa rekurencyjnie. Powinno wyjsc O(n) i ok 7 linijek kodu w dobrym jezyku programowania - nie wiem ile w php. Mysle, ze dasz rade bez proszenia ludzi o gotowce.

craker
06-05-2009, 05:54
aleś Ty miły, niech Cię drzwi ścisną :/

craker
05-05-2009, 21:50
Witam,
posiadam taką strukturę zorganizowaną na ArrayObject:

Kod:
Array{
[INDEX] => array { [0] => "INDEX", [1] => "Opis", ['children'] => array() },
[INDEX.Temp] => array { [0] => "INDEX.Temp", [1] => "Opis 1", ['children'] => array() },
[INDEX.Kosz] => array { [0] => "INDEX.Kosz", [1] => "Opis 2", ['children'] => array() },
[INDEX.Temp.wolne] => array { [0] => "INDEX.Temp.wolne", [1] => "Opis 3", ['children'] => array() },
[INDEX.Temp.wolne1] => array { [0] => "INDEX.Temp.wolne1", [1] => "Opis 4", ['children'] => array() },
[INDEX.Temp.wolne.wolne3] => array { [0] => "INDEX.Temp.wolne.wolne3", [1] => "Opis 5", ['children'] => array() },
[INDEX.Temp.wolne.wolne4] => array { [0] => "INDEX.Temp.wolne.wolne4", [1] => "Opis 6", ['children'] => array() },
}
i teraz tak, INDEX, INDEX.Temp i INDEX.Kosz to są główne gałęzie natomiast INDEX.Temp.* to są dzieci

teraz chciałbym osiągnąć taką strukturę:

Kod:
Array{
[INDEX] => array { [0] => "INDEX", [1] => "Opis", ['children'] => array() },
[INDEX.Temp] => array { [0] => "INDEX.Temp", [1] => "Opis 1", ['children'] => array(
														   [INDEX.Temp.wolne] => array { [0] => "INDEX.Temp.wolne", [1] => "Opis 3", ['children'] => array(
																					 [INDEX.Temp.wolne.wolne3] => array { [0] => "INDEX.Temp.wolne.wolne3", [1] => "Opis 5", ['children'] => array() },
																					 [INDEX.Temp.wolne.wolne4] => array { [0] => "INDEX.Temp.wolne.wolne4", [1] => "Opis 6", ['children'] => array() }) },
															[INDEX.Temp.wolne1] => array { [0] => "INDEX.Temp.wolne1", [1] => "Opis 4", ['children'] => array() } ) },
[INDEX.Kosz] => array { [0] => "INDEX.Kosz", [1] => "Opis 2", ['children'] => array() },

}

i mam problem jak zrobić takie drzewo ?? oczywiście zagłębienia w INDEX.Temp.wolne, INDEX.Temp.wolne3 można tworzyć w głąb jeszcze.

Samą główną strukturę i pierwsze zagłębienie potrafię zrobić, ale mam problem z wewnętrznymi zagłębieniami, ponieważ zagłębienie jest tworzone w oparciu o początkowe wartości czyli te po INDEX, albo INDEX.Temp, INDEX.Kosz i w zależności ile jest członów po INDEX albo po INDEX.Temp to tyle się tworzy zagłębień


Proszę o pomoc