[C++] Algorytm zliczający ilość wystąpień każdego z typów w drzewie
Ostatnio zmodyfikowano 2015-11-02 19:49
TheReclif Temat założony przez niniejszego użytkownika |
[C++] Algorytm zliczający ilość wystąpień każdego z typów w drzewie » 2015-10-30 14:20:15 Witam! Potrzebuję algorytmu zliczającego wystąpienia każdej możliwości. Wiem, że jest n elementów tablicy z węzłami oraz że każdy węzeł ma 2 wskaźniki na kolejne węzły(lub NULL, jeżeli od tego węzła nie odchodzi lewy/prawy/oba) i informację o typie obiektu. Myślałem nad stworzeniem rekurencyjnej funkcji wykorzystującej globalne zmienne i tablice. Wiem, że tak można, ale czy możliwe jest zrobienie czegoś takiego w formie pętli i tylko ze zmiennymi lokalnymi? |
|
1aam2am1 |
» 2015-10-30 15:14:42 Jeżeli węzeł ma jeszcze wskaźnik do rodzica to jest to proste.
|
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2015-10-30 19:44:04 Zakładam, że węzeł jest strukturą (w algorytmach struktury chyba działają szybciej) o takiej definicji: struct Node { Node * lewy; Node * prawy; Node * rodzic; int cos; Node() { lewy = NULL; prawy = NULL; rodzic = NULL; } };
Mam więc wskaźnik do rodzica. Jak może wyglądać algorytm zliczający wystąpienia każdej z możliwych wartości składowej cos (zakładam, że jest n możliwych wartości)? |
|
notabigthreat |
» 2015-10-30 20:39:39 w algorytmach struktury chyba działają szybciej |
Szybciej niż co? |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2015-10-30 21:07:15 Działają szybciej niż klasy. Sory za niesprecyzowanie. |
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2015-10-30 23:20:53 1aam2am1: Trzeba zliczać od liścia czy od korzenia? |
|
notabigthreat |
» 2015-10-31 09:09:01 Struktura od klasy różni się tym, że domyślnie składowe są public , a nie private . unsigned IleWDrzewie( int liczony, const Node * korzen ) { if( !korzen ) return 0; unsigned wynik = 0; wynik += IleWDrzewie( liczony, korzen->left ); wynik += IleWDrzewie( liczony, korzen->right ); if( korzen->cos == liczony ) ++wynik; return wynik; }
|
|
TheReclif Temat założony przez niniejszego użytkownika |
» 2015-10-31 13:29:36 Dziękuję za pomoc. Temat zamykam |
|
« 1 » 2 |