|
Обход дерева значений с конца | ☑ | ||
---|---|---|---|---|
0
Paimiji
12.05.21
✎
11:18
|
Есть ли какой-нибудь способ обойти дерево значений с конца и при этом неизвестна глубина вложенности дерева?
|
|||
1
ДенисЧ
12.05.21
✎
11:19
|
Найти конец. И от него плясать вверх.
Только зачем? |
|||
2
Paimiji
12.05.21
✎
11:19
|
Или самый простой способ это перевернуть его?
|
|||
3
fisher
12.05.21
✎
11:26
|
Тю. Гугли "способы обхода дерева" или как-то в этом духе. Их там несколько. Выбирай подходящий.
|
|||
4
fisher
12.05.21
✎
11:27
|
Хотя я бы начал с определения "конца дерева" и уточнения нужного порядка обхода.
|
|||
5
fisher
12.05.21
✎
11:28
|
Определения - в смысле определить что вообще такое в твоей голове "конец дерева". Это момент неочевидный.
|
|||
6
lodger
12.05.21
✎
11:28
|
смотря что ТС имеет ввиду под "способ обойти".
а так, пишем рекурсивные функции через СтрокаДерева.Родитель и СтрокаДерева.Строки; |
|||
7
ДенисЧ
12.05.21
✎
11:29
|
(6) Так это сверху получается...
|
|||
8
acht
12.05.21
✎
11:30
|
(2) > это перевернуть его?
Я бы на это посмотрел. |
|||
9
fisher
12.05.21
✎
11:33
|
"Зеленым вверх!" (с) прапора сажают деревья
|
|||
10
ДенисЧ
12.05.21
✎
11:53
|
||||
11
polosov
12.05.21
✎
11:57
|
Задачи про шарики кончились, теперь на собеседованиях задают вопрос про обход дерева с конца.
|
|||
12
GANR
12.05.21
✎
12:19
|
(2) можно прикладную задачу? так будет понятнее
|
|||
13
Повелитель
12.05.21
✎
12:55
|
(0) Почему нет.
В первом цикле пробежаться и записать в массив строки, в нужном порядке. Во второй обход цикл по массиву. |
|||
14
rphosts
12.05.21
✎
13:02
|
(4) видимо самый дальний лист... дерево ведь балансированное
|
|||
15
Serg_1960
12.05.21
✎
13:06
|
[юмор]
Если учесть что дерево можно сортировать, то вопрос о "конце" дерева становится подобным спору о количестве ангелов на острие иглы... |
|||
16
rphosts
12.05.21
✎
13:07
|
(14) * не балансированное
|
|||
17
ДедМорроз
12.05.21
✎
13:10
|
Я делал обход без стека через массив.
Когда мы встречаем ветку,мы добавляем ее в массив. С конца массива берём ветку для обработки и добавляем в него все вложенные. Получается,что каждую ветку мы обходим как бы с конца. |
|||
18
mistеr
12.05.21
✎
13:15
|
(0) Ну где там ТС? Неужели корпит над нормальной постановкой задачи, вопреки традициям Мисты?
|
|||
19
acht
12.05.21
✎
13:16
|
(17) Все это делается банальным порядком действий внутри рекурсивной процедуры
|
|||
20
GedKo
12.05.21
✎
13:21
|
добавляем колонку "уровень". а дальше цикл от максимального "уровень" + НайтиСтроки() + с продолжить есть Строки.Количество()>0
|
|||
21
polosov
12.05.21
✎
13:26
|
(20) Ага, добавляем "уровень", пробегаем дерево сверху-вниз и проставляем уровни, а потом развлекаемся обратным обходом?
|
|||
22
GedKo
12.05.21
✎
13:31
|
(21) при формировании дерева можно сделать и заполнение уровня. а при изменениях - корректировку.
я хз зачем подобное нужно, но если очень нужно - вполне рабочий вариант. |
|||
23
Малыш Джон
12.05.21
✎
13:39
|
(0) "все придумано до нас". Лень погуглить?
|
|||
24
H A D G E H O G s
12.05.21
✎
13:58
|
Дерево.Колонки.Добавить("КолонкаПоиска",Новый ОписаниеТипов("Булево"));
МассивСтрок=Дерево.Строки.НайтиСтроки(Новый Структура("КолонкаПоиска",Ложь),Истина); Для Каждого СтрокаДерева Из МассивСтрок Цикл Если СтрокаДерева.Строки.Количество()<>0 Тогда Продолжить; КонецЕсли; РодительскаяСтрока=СтрокаДерева; Пока Истина Цикл РодительскаяСтрока=РодительскаяСтрока.Родитель; Если РодительскаяСтрока=Неопределено Тогда Прервать; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
25
АнализДанных
12.05.21
✎
14:55
|
(0)
Процедура ОбходДереваРекурсивно(Дерево) Для Каждого Строка Из Дерево.Строки Цикл // Если процедура здесь, то обработка идет сверху-вниз ОбработатьСтрокуДерева(); ОбходДереваРекурсивно(Строка); // Если процедура здесь, то обработка идет снизу-вверх ОбработатьСтрокуДерева(); КонецЦикла; КонецПроцедуры |
|||
26
H A D G E H O G s
12.05.21
✎
15:04
|
(25) Где то на тысячной строке, 1С превратиться в тыкву.
|
|||
27
acht
12.05.21
✎
15:17
|
(26) Уровне
|
|||
28
H A D G E H O G s
12.05.21
✎
15:24
|
(27) да, пардон, уровне
|
|||
29
МихаилМ
12.05.21
✎
15:32
|
(0)что такое конец дерева значений?
|
|||
30
fisher
12.05.21
✎
15:39
|
Где начало того конца, которым оканчивается начало? (с) Козьма Прутков
|
|||
31
polosov
12.05.21
✎
15:41
|
(30) В начале же. НУ что за вопрос у ребят Прутковых.
|
|||
32
Bigbro
12.05.21
✎
15:44
|
главное начиная обходить дерево с конца - не обнаружить себя в лесу...
|
|||
33
H A D G E H O G s
12.05.21
✎
15:49
|
(29) Массив листьев
|
|||
34
Cthulhu
12.05.21
✎
15:51
|
"А этот пацак все время говорит на языках, продолжения которых не знает!" (с)
- ... что нам мешает выполнить задачу? — Геометрия, — со вздохом говорит Петров. — Ну, вы просто не обращайте на нее внимания, вот и все! — произносит Морковьева.(с) автор, что за бред ты несешь?. 1) с конца которой из веток дерева? 2) добрались до развилки - дальше куда идем? вверх - игнорируя другое ответвление от развилки? тогда это будет не обход (пропуски). вниз по другой ветке от развилки? тогда это не обход с конца - потому что вниз. итого: |
|||
35
Cthulhu
12.05.21
✎
15:52
|
(33): вот да, разве что. не от конца, а от массива концов.
|
|||
36
Йохохо
12.05.21
✎
15:53
|
(33) это поверхность, но не граница и не конец
|
|||
37
tesei
12.05.21
✎
17:31
|
(30) В конце концов среди концов конец найдётся наконец!
Однажды нес пастух куда-то молоко, Но так ужасно далеко, Что уж назад не возвращался. Читатель! он тебе не попадался? К. Прутков. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |