Мой лучший совет: не существует стандартной древовидной структуры данных, потому что есть так много способов ее реализовать, что невозможно охватить все базы одним решением. Чем конкретнее решение, тем менее вероятно, что оно применимо к любой конкретной проблеме. Меня даже раздражает LinkedList - что, если я хочу круглый список ссылок?
Базовая структура, которую вам нужно реализовать, будет набором узлов, и вот несколько вариантов, с которых можно начать. Предположим, что класс Node является базовым классом всего решения.
Если вам нужно перемещаться только по дереву, то классу Node необходим список дочерних элементов.
Если вам нужно перемещаться вверх по дереву, то классу Node нужна ссылка на его родительский узел.
Создайте метод AddChild, который позаботится обо всех мелочах этих двух точек и любой другой бизнес-логике, которая должна быть реализована (дочерние ограничения, сортировка дочерних элементов и т.