|
|
|||||||||||||||||||||
Построить дерево29.04.2020, 17:06. Показов 3484. Ответов 21
Метки нет (Все метки)
Нужна помощь в организации парсера.
Есть простейший класс дерева
Начал так:
0
|
|||||||||||||||||||||
| 29.04.2020, 17:06 | |
|
Ответы с готовыми решениями:
21
Построить двоичное дерево Построить бинарное дерево |
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
||
| 29.04.2020, 18:22 | ||
|
0
|
||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
|||||||
| 29.04.2020, 20:29 | |||||||
|
Я бы применил такую версию
0
|
|||||||
|
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
|
|
| 29.04.2020, 23:12 | |
|
я б наверно предложил в
ModelFromCSV добавить что то типа ParentLevel - уровень, дочерним которого является текущий объект. эта штука должна сильно облегчить построение дерева - отобрать нужные элементы будет куда легче. при этом вычисление этого ParentLevel простое - просто взять значение до последней точки. а дальше по идее простая рекурсия
0
|
|
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
|||||||
| 30.04.2020, 00:46 | |||||||
|
Итак, для начала хочу добавить что именно с таким деревом удобно работать например в WinForm, для консоли как по мне это дохлый номер (использовать можно, но как применить "для дела" - без понятия). По поводу поля Level в самом узле - идея возможная, но очень и очень плохая. Объясню почему - в тот момент когда идет добавление элемента и вы руками или с помощью алгоритма дерево проставляет ему "уровень" - все хорошо, НО стоит удалить хотя бы 1 элемент из дерева - у всех последующих и дочерних элементов придется менять уровень (прописывать алгоритм - та еще затея, мало того что надо рекурсией пробегаться, так еще и парсить строку, это очень затратно, да и алгоритм такой писать мне было бы лень, а если сортировку делать - тот же баян). Поэтому трижды подумайте прежде чем прописывать уровень у узла. Вообще узел - это тупо информация и как правило ссылки на другие узлы. Все остальное берет на себя дерево (добавление, удаление, сортировка, вставка, присваивание уровней, вывод на экран и тд)
0
|
|||||||
|
|
|||||||
| 30.04.2020, 20:31 [ТС] | |||||||
Level задаёт уровень. Вероятность дублирования Level или пропуска (типа 1.1 а следом 1.6) нулевая.Добавив это
0
|
|||||||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
||
| 30.04.2020, 20:45 | ||
|
0
|
||
|
|
|
| 30.04.2020, 21:11 [ТС] | |
|
На основе этого дерева я буду собирать "другое" )))
Для начала это дерево нужно будет просто запихнуть в treeview для простого отображения. Далее, оперируя ТОЛЬКО данными о родитель-потомок (которые были получены как раз из текстового поля списка ModelFromCSV) я буду создавать файлы и запихивать их друг в друга (звучит странно, но это именно то что написал. Это так называемая "сборка" в одной CAD программе)
0
|
|
|
|
||
| 30.04.2020, 21:18 [ТС] | ||
|
То, что узел является Родителем для кого-то ещё, у меня есть информация (признак что в узле есть потомки) т.е. там в
ModelFromCSV ещё много чего есть. Но иерархия передана именно так, в текстовой переменной.Методов никаких не нужно. Мне просто надо знать кто куда и когда (order) входит. Сначала для отображения, потом для построения. Добавлено через 3 минуты 1 - узел 1.1 - потомок, для которого узел тот, что перед точкой, т.е. просто 1 3.33.1 - тут родитель 3.33
0
|
||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
||
| 30.04.2020, 21:42 | ||
|
0
|
||
|
|
||
| 30.04.2020, 23:36 [ТС] | ||
|
Enifan, я умею заполнять деревья)) я даже знаю что такое TreeView.
Я вот это не понял? Добавлено через 6 минут Может всё ещё проще? Нафиг весь код темы. Вопрос упрощённо Как превратить список из строк вида "1" "1.1" "2.1" "1.1.2" "1.2.1" "4.8.7" В дерево вида: "1" "1.1" "1.1.2" "1.2.1" "2.1" "4.8.7" С условием, что "X." - это родитель. Т.е. -1 --1.1 --1.2 -2 --2.1 -3 --3.1 ---3.1.1
0
|
||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
|||||||
| 01.05.2020, 10:04 | |||||||
0
|
|||||||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
||
| 01.05.2020, 10:53 | ||
|
отсортировать список и записать в дерево последовательно - вроде не плохой вариант Лан начнем сначала, есть список уровней, надо его записать в treeview, одинаковых уровней быть не может, и отсутствие родителей просто невозможно, пропуск уровней тоже быть не может, удалять элементы из дерева и сортировать дерево мы не будем. Все верно?
0
|
||
|
|
||||
| 01.05.2020, 11:06 [ТС] | ||||
|
В целом, да, но ещё добавлю, что на входе неизвестное количество объектных строк (класс с полями) с неизвестными значениями поля string Level у каждой строки.Добавлено через 2 минуты То, что я привёл в пример в первом сообщении, может быть сотой частью от всего количества строк, а может быть и всего 3 строки. Подуровней может вообще не быть. Т.е.
Level, раз оно дерево.
0
|
||||
|
1845 / 1187 / 501
Регистрация: 14.10.2018
Сообщений: 3,207
|
|||||||||||
| 01.05.2020, 12:16 | |||||||||||
Сообщение было отмечено skilllab как решение
Решение
skilllab, если вы хотите чтобы вас
ModelFromCSV можно было добавить в дерево, то надо сделать наследование от узла, с которыми работает дерево. Набросок сделаю, но полная реализация ложится на вас, так как не знаю как именно вы будете работать с ним
0 или 1, от этого поменяется буквально 2 строки кода. В моем случаи верхушка начинается с 1
0
|
|||||||||||
|
Модератор
|
|||||||||||||
| 01.05.2020, 13:05 | |||||||||||||
0
|
|||||||||||||
| 01.05.2020, 14:21 | |
|
0
|
|
| 01.05.2020, 14:21 | |
|
Помогаю со студенческими работами здесь
20
Получить уровень каждого объекта в списке (построить дерево?)
Построить бинарное дерево поиска.Вычислить сумму элементов, являющихся листьями
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|