給定一棵樹,我需要找到從'a'到'b'的路徑中'第k個節點。這意味着我需要在從節點'a'到節點'b'的路徑中的'第k'位置找到節點。我正在思考最低共同祖先和/或重光分解的問題,但我不確定這是否是這樣做的。任何正確的方向指導表示讚賞。
給定一棵樹,在Log(n)中找到從節點'a'到節點'b'的路徑中的第k個節點?
詳情:
- 的樹不是二叉樹。它是一個具有n-1個邊,n個頂點和無週期的無向圖。只是你的常規樹
- 樹的頂點編號從1到n。有n-1個無向邊連接這些頂點的n-1對
- 'a'和'b'是樹中從1到n編號的任何2個頂點。我們要在從'a'到'b'的路徑中找到'第k個節點。這是保證數「k」的值是< =從路徑中的節點的數目「A」到「b」
甲BFS施加在每個查詢(第k個節點從「A」到「b」 )不是一個選項,因爲查詢的數量很大。
似乎很微不足道,所以可能不是問題的目的是什麼,但是,如果路徑是給定的,你不能只跟蹤從'a'開始遇到的節點並計數到第k個? – Matt
O(log(n))查詢?僅供參考,路徑不是'給定'的。在樹中,任意兩對頂點之間只有一條路徑。 – bholagabbar
您的問題以「給定路徑」開頭。是的,我會在樹中說兩個節點之間的路徑是唯一的,否則它不是一棵樹。 – Matt