Я бы разделил реализацию на TreeClass и TreeNodeClass
Класс дерева будет иметь переменные-члены
TreeNodeClass root
с методами
TreeNodeClass addAtRoot(data)
которые возвращают только что созданный узел
TreeNodeClass Также нужен метод AddChild (), который также будет возвращать только что добавленный узел.
Тогда вы можете сделать что-то вроде
addAtRoot(rootData).AddChild(childData).AddChild(grandchildData);
или
Используйте что-то подобное, чтобы случайным образом генерировать дерево
AddRecursively(TreeNodeClass root)
{
numChildren = SomeRandomNumber;
While(numChildren > 0)
{
CTreeNodeClass newnode = root.AddChild(SomeRandomData);
AddRecursively(newnode);
}
}
Основная идея заключается в том, что вы хотите вернуть узел, который вы только что добавили в дерево.
Возможно, вы также захотите, чтобы ребенок знал своего родителя, поскольку иногда это может быть очень удобно.