C++ (Qt)
struct MyStruct {
int someData;
QList<MyStruct *> children; // любой контейнер подойдет, QList как пример
MyStruct *parent; // 0 == root else ветка-лист
};
Для этой структуры еще придется объявлять кучу методов поиска, добавления, удаления и всего-всего...