Obliczanie ilości liści drzewa

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.

1

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

2

Tak w pseudo-C++:

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

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

 return result;
}

(uint - unsigned int)

1 użytkowników online, w tym zalogowanych: 0, gości: 1