|
Обход дерева |
☑ |
0
Kamich
16.11.16
✎
16:14
|
Добрый день форумчане!
Подскажите плз для чайника, как в массиве обойти дерево?
Например есть данные
-Автомобили
- Мазда
- Кия
- БМВ
-Мотоциклы
- Сузуки
- Ямаха
Нужно получить следующее:
Мазда
Кия
БМВ
Сузуки
Ямаха
|
|
1
Волшебник
модератор
16.11.16
✎
16:15
|
в массиве нет деревьев
|
|
2
DrShad
16.11.16
✎
16:16
|
обходи дерево и заполняй массив, а еще лучше получи его из запроса формирующего дерево
|
|
3
Про100Филя
16.11.16
✎
16:17
|
(0) процедура которая вызывает сама себя если заполнен родитель, если нет то записывай элемент в массив.
|
|
4
Kamich
16.11.16
✎
16:18
|
В Массив передается значение,где проставлены галочки
|
|
5
DrShad
16.11.16
✎
16:18
|
(3) а проверять на вхождение в массив?
и не процедура а рекурсивная функция
|
|
6
Kamich
16.11.16
✎
16:19
|
(5) Можно подробнее?
|
|
7
DrShad
16.11.16
✎
16:19
|
(4) продолжайте наблюдения
|
|
8
DrShad
16.11.16
✎
16:20
|
(6) о чем?
|
|
9
Ёпрст
гуру
16.11.16
✎
16:20
|
(4) Посмотри, там еще в структуру что-то должно записываться и в сооответствие на выходе.
|
|
10
Про100Филя
16.11.16
✎
16:20
|
что то типо
Процедура ОбходДерева(Строка= неопределено)
Для каждого НоваяСтрока из ?(Строка=неопределено, Дерево.Строки, Строка.Строки) Цикл
Если ЗначениеЗаполнено(НоваяСтрока.Родитель) Тогда
ОбходДерева(НоваяСтрока)
Иначе
Массив.Добавить(НоваяСтрока);
КонецЕсли
КонецЦикла
КонецПроцедуры
|
|
11
Про100Филя
16.11.16
✎
16:22
|
(5) может массив глобальный и возвращать ничего не надо, про проверку ничего не было, обход дерева строки с одинаковым названием будут считаться разными.
|
|
12
DrShad
16.11.16
✎
16:24
|
(10) какой ужас
|
|
13
Про100Филя
16.11.16
✎
16:34
|
(12) что не так?
|
|
14
DrShad
16.11.16
✎
16:39
|
(13) все, а самое главное на выходе что?
|
|
15
olegves
16.11.16
✎
16:44
|
дерево надо обходить сначала по солонь,а затем на солонь, чтобы голова не закружилась
|
|
16
Про100Филя
16.11.16
✎
17:06
|
(14) Процедура какой выход? Перем Массив; и перед вызовом
очистить.
|
|
17
youalex
16.11.16
✎
17:16
|
(10) *Если ЗначениеЗаполнено(НоваяСтрока.Родитель) Тогда*
тут, скорее,
Если НоваяСтрока.Строки.Количество() > 0 //
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой