Требуемый по заданию процесс обработки символьных строк программой UNI можно алгоритмически разделить на 2 этапа:

  1. унификация входных данных
  2. систематизированное представление результатов.
Унификация данных на этапе 1 означает исключение дубликатов символьных строк, поступающих из потока стандартного ввода (STDIN). Она обеспечена поиском по бинарному дереву, который исключает повторы входных строк, но сохраняет оригиналы в логической структуре бинарного дерева. Поскольку входные строки должны поступать из потока стандартного ввода, то для их чтения рекомендуется применять стандартную библиотечную функцию GETS систему программирования С и С++, зарезервировав статический символьный буфер для получения каждой очередной строки. Емкость буфера должна превышать размер самой длинной ожидаемой строки. Параллельно процессу чтения входных строк, на этапе 1 должно строиться бинарное дерево, информационные поля узлов которого сохраняют оригинальные строки из потока стандартного ввода. Адресные поля узлов бинарного дерева должны обеспечивать иерархию поиска очередной входной строки для проверки ее уникальности. Ввод уникальных строк будет динамически развивать бинарное дерево поиска путем добавления новых листьев. Ввод дубликатов не должен приводить к модификации бинарного дерева, но должен фиксироваться соответствующим предупреждением в потоке стандартной диагностики (STDERR). Ввод первой строки должен форсированно приводить к формированию корня бинарного дерева без проверки ее уникальности. Адрес корня следует сохранить в отдельной переменной (ROOT) для доступа к остальным узлам бинарного дерева, вырастающего из данного корня. Рекомендуется распределение корня выполнить отдельно, до цикла обработки остальных строк. Циклическая процедура унификации входного потока символьных строк должна продолжаться, пока не исчерпан поток стандартного ввода. Признаком конца потока стандартного ввода следует считать нулевой возврат (NULL) функции GETS. Завершение ввода входных строк означает окончание этапа 1 и автоматический переход к этапу 2.
На этапе 2 должно осуществляться систематизированное представление результатов унификации входных строк по бинарному дереву этапа 1. Это означает перечисление входных строк в алфавитном порядке. Достижение указанной цели обеспечивает прохождение бинарного дерева этапа 1 в симметричном порядке. Упорядоченный по алфавиту список входных строк должен отображаться через поток стандартного вывода (STDOUT). После завершения указанной обработки необходимо ликвидировать бинарное дерево, корректно освободив память, которая была динамически распределена под его узлы на этапе 1. Для очистки памяти рекомендуется использовать процедуру прохождения бинарного дерева в концевом порядке (снизу-вверх), последовательно исключая все узлы в направлении от листьев к корню.
Следует отметить, что характер информационной обработки узлов на этапе 2 не зависит от порядка прохождения бинарного дерева. Например, удаление бинарного дерева могло быть реализовано при любом порядке обхода узлов, а печать информационных полей могла сопровождаться нумерацией, шифрацией, дешифрацией и т. п. Аналогично, более привлекательной выглядит инвариантная структура процедура поиска на этапе 1, которая не зависит от типа ключевых информационных полей узлов, и обеспечивает универсальный поиск по ключам любого типа (целочисленным, символическим и т. д.).
Указанная мобильность процедур прохождения и поиска по бинарному дереву достигается объектно-ориентированной обработкой данных на основе использования виртуальных интерфейсов и косвенной адресацией компонентных методов в базовом и производном классах бинарных деревьев.