Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1

Построить дерево

29.04.2020, 17:06. Показов 3602. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь в организации парсера.
Есть простейший класс дерева
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 public class BaseTreeModel
    {
 
        void BaseTreeModel(ModelFromCSV model)
        {
            SetDText(model);
            Children   = new List<BaseTreeModel>();
        }
        
        public List<BaseTreeModel> Children { get; }
       
        public string ParentName { get; set; } = string.Empty;
 
        public string DisplayText { get; private set; } = string.Empty;
 
        public BaseTreeModel Parent { get; set; }      
 
        public void SetDText(ModelFromCSV model)
        {
            DisplayText = $"Имя: {model.Name}, Обозначение: {model.Designation}, Уровень: {model.Level}";
        }
 
        public virtual void AddChild(BaseTreeModel child)
        {
            child.Parent = this;
            Children.Add(child);
        }
    }
К нему есть простейший класс айтема
C#
1
2
3
4
5
6
public class ModelFromCSV
    {
        public string Designation { get; private set; }
        public string Level { get; private set; }   
        public string Name { get; private set; }   
     }
Айтемы представлены как:

C#
1
2
3
4
5
6
7
8
9
10
11
var itemsList = new List<ModelFromCSV>()
                {
                    new ModelFromCSV("ABC", "0", "Item21"),
                    new ModelFromCSV("ABC", "1", "Item21"),
                    new ModelFromCSV("ABD", "2", "Item22"),
                    new ModelFromCSV("ABC", "1.1", "Item31"),
                    new ModelFromCSV("ABC", "1.2", "Item11"),
                    new ModelFromCSV("ABC", "3", "Item1"),
                    new ModelFromCSV("ABC", "3.1", "Item34"),
                    new ModelFromCSV("ABC", "3.1.2", "Item55"),
                };
И вот теперь ума не приложу как попроще это всё привести к дереву.

Начал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var newTree = new BaseTreeModel(list.FirstOrDefault(r => r.Level == "0"));
var resultList = list.Where(x=>x.Level != "0").ToList();
 
Regex regex2 = new Regex(@"^[1-99]$");
var firstLevel2 = resultList.Where(ind => regex2.IsMatch(ind.Level)).ToArray();
 
foreach (ModelFromCSV modelFromCsv in firstLevel2)
 {
     CreateTree(modelFromCsv.Level, list, newTree);
 }
 
 
....
 
private void CreateTree(string v, List<ModelFromCSV> list, PLMTree newTree)
        {
            var curLevel = v + ".";
            var arr = "1-99";
            string currentRegex = $"^{curLevel}[{arr}]$";
 
            Regex regex = new Regex(currentRegex);
            var firstLevel = list.Where(ind => regex.IsMatch(ind.Level)).ToList();
 
            foreach (ModelFromCSV modelFromCsv in firstLevel)
            {
             ????
            }
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2020, 17:06
Ответы с готовыми решениями:

Построить дерево
Здравствуйте. Не могу построить дерево, пример найти не удаётся, одни примеры постройки бинарных деревьев. а мне нужно дерево вида...

Построить двоичное дерево
1)Построить двоичное дерево и вывести его на экран (вывод на экран идет с корня, ниже наследники) 2)построить двоичное дерево поиска и...

Построить бинарное дерево
Люди, помогите построить бинарное дерево! У меня есть файл с 5 параметрами (модель машины ,тип, гос.номер, пробег, расход топлива), нужно...

21
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16152 / 11273 / 2890
Регистрация: 21.04.2018
Сообщений: 33,147
Записей в блоге: 2
01.05.2020, 20:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Enifan Посмотреть сообщение
это уже не узел а полноценное дерево )))
Дерево обычно содержит ещё дополнительные члены.
По идее методы создания узлов и размещения их в дереве - это методы дерева.
Но я не стал заморачиваться и сделал универсальный класс - любой узел может быть отдельным методом.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
02.05.2020, 22:46  [ТС]
Всем: это же раздел для новичков)))
Цитата Сообщение от Enifan Посмотреть сообщение
void AddNodeInTree(ModelFromCSV model)
Только это и требовалось.

Добавлено через 1 минуту
А узлы я уже свои привяжу (есть у меня), а не от WinForms.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2020, 22:46
Помогаю со студенческими работами здесь

Построить дерево (не бинарное) с возможностью сериализации
Да, вопрос слишком глупый и обширный, но все же. Ничего толкового по НЕ бинарным деревьям не нашел. Мне нужно построить дерево с 1-n...

Получить уровень каждого объекта в списке (построить дерево?)
Имеется класс примерно такого вида: public class Item { public string ID { get; set; } public string...

Построить дерево бинарного поиска и найти глубину заданного узла
построить дерево бинарного поиска и найти глубину заданного узла

Построить бинарное дерево поиска.Вычислить сумму элементов, являющихся листьями
Помогите построить бинарное дерево поиска.Вычислить сумму элементов, являющихся листьями

Построить дерево бинарного поиска и найти для него сумму нечетных значений узлов дерева
Ни как не могу придумать правильный метод который будет считать сумму нечетных значений узлов дерева. Помогите пожалуйста! using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru