![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как перебрать все пункты MainMenu самым простым способом ? [D6, 2000, XP]
etrado © (2006-06-19 15:27:00)конструкция вида
for ... 0 to (Items.Count - 1) do
... Items[i] ...
дает только пункты верхнего уровня иерархии. получается, нужно рекурсивно для каждого пункта меню проверять наличие подпунктов. это единственный возможный вариант или есть что-то проще ?
novill (2006-06-19 15:50:00) [1]вот например тут http://www.codenet.ru/progr/alg/btree.php
Правда Си, но тоже понятно
нерекурсивная функция для обхода дерева может выглядеть так:
template
void walkNotRec(TNode* tree) {
if (tree) {
TNode temp;
TNode* ptemp = &temp;
TNode* p = ptemp, *c = tree, *w;
while (c != ptemp) {
cout value;
w = c->pleft;
c->pleft = c->pright;
if(c == p)
c->pright = 0;
else
c->pright = p;
p = c;
if (w) c = w;
}
}}
novill (2006-06-19 15:33:00) [2]Что может быть проще рекурсивного перебора?