鑑於:列表N
節點。每個節點由2個數字組成:nodeID
和parentID
。 parentID
可能是null
(如果它是根節點)。如何從其節點列表中更快地更新樹,然後O(n^2)?
是否有算法從時間複雜度高於O(N^2)的節點列表中重新創建樹?
每個節點可能有0個或更多的孩子。
的算法的帶O
簡短說明(N^2)的複雜性:
find a root Node, put it to a Queue
while Queue is not empty
parentNode = Queue.pop()
loop through nodes
if currentNode.parentId = parentNode.id
parentNode.addChild(currentNode)
queue.push(currentNode)
nodes.remove(currentNode)
看來,這個算法具有O(N^2)時間複雜度(與係數小,也許0.25) 。但是我在這裏計算複雜度可能是錯誤的。
雖然此方法通常有效,但它看起來像Roman正在使用ID,並且對實際父對象的引用尚未知道。 – Kaganar 2012-02-16 18:01:36
@Kaganar:只是想添加相同的評論 – Roman 2012-02-16 18:04:40
@Kaganar如果鏈接不可用,您可以創建哈希映射。但複雜性不會保持O(n)。 – ElKamina 2012-02-16 18:11:53