Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: drzewko zależne od zawartości

Pytanie algorytmiczne

Zawartość jest pogrupowana w działach , które są drzewkiem .

Jak wyświetlić drzewko pomijając puste działy , a sprawdzając jednocześnie czy niższe poziomy drzewka mają zawartość . Dodatkowo ten sam wpis może być przypisany do kilku działów .Adrian Zdziechowicz edytował(a) ten post dnia 08.04.09 o godzinie 14:49
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: drzewko zależne od zawartości

Czy możesz dorzucić obrazek przedstawiający oczekiwany rezultat ?
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: drzewko zależne od zawartości

Janusz Skudrzyk:
Czy możesz dorzucić obrazek przedstawiający oczekiwany rezultat ?

-1
--2
---3

na poziomie 2 moze byc pusto i trzeba sprawdzic czy na poziomie 3 cos jest

jesli tak to wyswietlic poziomy od 1 do 3
jesli nie to tylko poziom 1
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: drzewko zależne od zawartości

hmmm ...
dorzuć sobie pole wyswietl

rekurencyjnie przechodzisz po elementach, jeśli element ma przypisaną do siebie zawartość, to wyswietl++ oraz return true, po powrocie z zagłębienia sprawdzasz czy było true, jeśli tak to wyswietl++
na koniec jeszcze raz rekurencja, tym razem z pokazaniem, co ma wyswietl > 0, to pokazujesz i zagłębiasz się, jeśli ma 0, to pomijasz zagłębienie
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: drzewko zależne od zawartości

Nie jestem tylko pewny czy w przypadku jeśli 1 i 2 jest puste

-1
--2
---3
-4

nawet jeśli 3 ma zawartość i zwiększy pole wyswietl poziomu 2 , to co z poziomem 1 bo zgodnie z logiką rekurencja pójdzie dalej do 4 ?
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: drzewko zależne od zawartości

z 1 przejdzie do 2, z 2 do 3, z 3 wróci do 2, z 2 wróci do 1; dopiero wtedy przejdzie do 4
jeśli w 3 coś jest, to 2 otrzyma odpowiedź "tak, coś tam jest", a tym samym odeśle do 1 tą samą odpowiedź
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: drzewko zależne od zawartości

zaprzeczyć się nie da rzecz oczywista
chyba zbyt długi dzień dzisiaj ;)

Temat: drzewko zależne od zawartości

Nie wiem, jak to masz zapisane. Jakbyś dał konkretną strukturę w sql-u, czy tablicy, to dałoby się wymyślić coś konkretnego.
W każdym razie do drzewek najlepiej użyć rekurencji, jak już Janusz wspomniał.

Tutaj jest prosty przykład z użyciem tablicy

<?php

$drzewko = array('0' => array('0' => '0.0','1' => '0.1'),
'1' => array(),
'2' => array('0' => '2.0'),
'3' => array('0' => array('0' => '3.0.0'))
);
function Wyswietl($tablica)
{
foreach($tablica as $klucz => $element)
{
if(is_array($element) && count($element) == 0)
echo $klucz.'<br/>';
elseif(is_string($element))
echo $element.'<br/>';
else
Wyswietl($element);
}
}

print '<pre>';
print_r($drzewko);
print '</pre>';

Wyswietl($drzewko);

?>

Taka funkcja przejdzie po wszystkich gałęziach drzewka zdefiniowanego w tablicy. Łatwo możesz zanalizować zachowanie takich funkcji za pomocą drzewka wywołań funkcji (call tree) http://pl.wikipedia.org/wiki/Drzewo_wywo%C5%82a%C5%84_... .
Jest to bardzo przydatne w przypadku analizy funkcji rekurencyjnych.

Pozdrawiam.Piotr Wittchen edytował(a) ten post dnia 14.04.09 o godzinie 06:39
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: drzewko zależne od zawartości

http://adrian.ispc.pl/files/hiddenlevels.php
struktura bazy [ id | parent | name | content ]
cyferka za nazwą jest ilością zawartości dla danego poziomu więc jeśli 'sześć' coś ma to dla 'pięć' i 'cztery' trzeba zrobić ++ a następnie wyświetlić wszystko co ma cyferkę >0Adrian Zdziechowicz edytował(a) ten post dnia 14.04.09 o godzinie 17:38



Wyślij zaproszenie do