Вы можете хранить ссылки на каждый узел дерева в HashMap [1], чтобы получить O(1)
доступ к каждому узлу вместо O(log(n))
, что типично для деревьев.Это позволило бы построить дерево за O(n)
время, потому что этот HashMap позволяет переходить непосредственно к узлу, а не проходить туда из корневого узла дерева.
[1] Ключ будет любымисточник использует для уникальной идентификации узлов (я предполагаю, что это целое число или строка).Значение будет ссылкой на узел в дереве.Обратите внимание, что реализация дерева должна сделать все его узлы общедоступными, поэтому вам, вероятно, придется написать дерево самостоятельно или найти подходящую библиотеку (деревья JDK, такие как TreeMap, сохраняют свою внутреннюю структуру частной, поэтому они не будут ее обрезать).