После создания массива TreeNode[]
это легко:
TreeNode root = null;
for (int i=0; i<T.length; ++i) {
if (T[i] == i) { // if it's a root node
//TODO: Test for multiple root nodes here
root = nodes[i];
} else {
nodes[T[i]].addChild(nodes[i]);
}
}
Я бы добавил объект private TreeNode parent;
в класс TreeNode
, инициализировал его до null
и установил его в родительская ссылка в методе addChild
. Это удобно во время отладки, даже если вам это не нужно для первого использования этого класса. Возможно, вам понадобится это позже.