![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Tree Walker: Create [D6, Win2k]
Satirus © (2002-04-19 17:14:00)Вопрос к умудрённым опытом в использовании компонента TTreeView.
Предложите оригинальный код для перебора веток дерева снаружи внутрь. То есть, как пройтись сначала по сиблингам корня, потом по их детям, потом по сиблингам детей и т. д., до последнего колена в глубину
MBo (2002-04-19 17:48:00) [21]если не хранить номера узлов, имеющих деток, то придется обходить все, проверяя level, т.е. сначала с level 0, потом с 1 ,и т.д., пока не будет таких 0.
А можно создавать при первом обходе список, сортированный по level и дальше по нему.
vuk (2002-04-19 17:46:00) [22]Рекурсивно. То есть пишется процедура, которой на вход подается узел и она сначала проходит по всем его дочерним узлам а потом делает второй проход по ним же и вызывает сама себя, передавая каждый из дочерних узлов в качестве параметра.
vuk (2002-04-19 17:45:00) [23]Рекурсивно. То есть пишется процедура, поторой на вход подается узел и она сначала проходит по всем его дочерним узлам а потом делает второй проход по ним же и вызывает сама себя, передавая каждый из дочерних узлов в качестве параметра.
Дмитрий Баранов (2002-04-19 17:44:00) [24]В цикле по всем узлам (0..TreeView1.Items.Count-1) строим массив массивов (динамических) указателей (TTreeNode).
Первый индекс - Items[i].Level, второй - порядковый номер узла в массиве.
Вариации на тему - не массивы, а стеки (динамический массив - тормоз).
Выстроили - работаем.