Obliczanie ilości liści drzewa

Freebird
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 275
0

Mam przykładową strukturę:

1 ---------------------------- 2 ------------------ 4 --------------------- 5
| |
|-------------- 3 ---------- 6 |------------ 10
| | |
|-------------- 7 |-----8 |-------------11
|
|-----9 --------- 12
|
|--- 13

Krótki opis:

Od 1 odchodzą trzy gałęzie do 2, 3, 7
Od 2 odchodzi jedna gałąź do 4
Od 3 odchodzą trzy gałęzie do 6, 8, 9 itp

Szukam algorytmu, który byłby w stanie policzyć wszystkie węzły i liście odchodzące od zadanego korzenia.

Np. dla 1 wynik 12
dla 2 wynik 4
dla 3 wynik 5 itp.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Nie rozumiem problemu. Zwykła trawestacja drzewa (dowolna -> inorder, preorder, postorder) da ci to czego szukasz.
http://pl.wikipedia.org/wiki/Przechodzenie_drzewa

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
2

Tak w pseudo-C++:

Kopiuj
uint Tree::count_leaves()
{
 uint result = 1;

 foreach (child in this.children)
  result += child.count_leaves();

 return result;
}

(uint - unsigned int)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.