Не совсем понятно, что вы имеете в виду под «поддерживать позицию и размер».
Если вы имеете в виду, что для данного узла N, принадлежащего Дереву (T), у него есть один и тот же родитель и те же дочерние элементы, вы поясните нам, если преобразование, которое вы применяете к T, чтобы получить упрощенный (T1) создает другое дерево или гомоморфное дерево.
Я не очень хорошо знаю Цель C, но вопрос, который вы задаете нам, кажется общим для каждого языка ООП.
Учитывая N узел, который вы используете в дереве T, вы можете объявитьвнутренний класс "NData" внутри базового класса N. Таким образом, каждый производный от узла класс будет иметь данные NData для использования в процессе упрощения.
Надеюсь, я понял вопрос: -)