Составить программу на языке си для построения и обработки дерева общего вида или упорядоченного двоичного дерева, содержащего узлы типа float,int,char или enum. Основные функции работы с деревьями реализовать виде универсальных процедуру или функций. После того как дерево создано, его обработка должна производиться в режиме текстового меню со следующими действиями:
1) Добавление нового узла (для двоичного дерева положение нового узла определяется в соответствии с требованием сохранения порядка; для дерева общего вида должен задаваться отец добавляемого узла. Добавляемый узел становится самым младшим сыном)
2) текстовая визуализация дерева (значение каждого узла выводится в отдельной строке, с отступом, пропорциональным глубине узла, в порядке старшинства узлов)
3) удаление узла(двоичное дерево перестраиваться в соответствии с требованием сохранения целостности и порядка; для дерева общего вида удаляется все под дерево, исходящее из удаляемого узла. Должно быть предусмотрено корректное освобождение памяти )
4) вычисления значения некоторой функции от дерева (целой или логической) , в соответствии с заданием.
Задание: проверить, является ли двоичные дерево симметричным (равным своему отражению)