最近我遇到了這個問題,我在O(n * q)中找到了解決方案。我在想,是否有更好的方法來處理這種複雜度較低的問題。樹中最近的節點
的問題是在這裏,如下所示:
鑑於「n」個節點的加權樹(N> = 1且n可以去10 ),它的節點可以是特殊的或非特殊的。節點1總是特殊的,最初休息時間不特別。現在,有兩個操作:
1.我們可以通過「U Node_Number」
OR
2.At隨時更新由更新操作任何非特殊節點特殊節點,我們可以詢問用戶「Q Node_Number」它應該返回最接近「Node_Number」的樹中的特殊節點。
這些操作也可以高達10 。
我的解決方案:
我想創建鄰接列表。對於操作1,我可以通過布爾標誌保留特殊或非特殊的記錄。但是對於操作2,我的解決方案包括每當「Q Node_Number」以「root_Number」作爲root來開始我的BFS時執行BFS。
但是複雜性是二次的。這是解決這個問題的最佳方式嗎?
既然什麼時候BFS二次時間? –
我正在爲第二種類型的每個查詢執行BFS以查找特殊節點。因此,第二種類型的一個查詢的一個BFS –
然後一個查詢是線性時間;這裏有什麼問題? –