Всем привет! Сегодня мы вспомним азы программирования на C# и повторим, что такое бинарные деревья, чем они отличаются от остальных деревьев, что же такое обход и какой он бывает.
Для начала повторим самое основное. Дерево – связный граф без циклов. Корень – самая верхняя вершина дерева. Лист – вершина, не имеющая потомков. Обход дерева – систематический просмотр всех вершин, при котором каждая вершина встречается один раз.
В рассматриваемых алгоритмах используется бинарное дерево – то есть дерево, в котором каждая вершина имеет два потомка (правые и левые поддеревья – left и right). Добавление реализуется по следующей схеме: при добавлении каждой новой вершины, если значение меньше корня, то оно записывается в левое поддерево, в противном случае – в правое (древесная сортировка).
Реализуем же все перечисленные алгоритмы на языке C#!
Тех, кто хочет немного обновить в памяти данный материал, либо еще только учится программировать базовые алгоритмы, без которых не обойдется ни один программист, прошу под кат!) Все фрагменты кода подробно прокомментированы, а демонстрационный проект на языке C# (VS2012) опубликован на GitHub.
Читать полностью »