2013-07-20 16 views
0

問題如下:「給定一組員工ID和經理ID,經理也是員工。給定任意2個員工ID,任務是查找他們之間的關係「查找樹結構中元素之間的關係,其中沒有初始關係

我想到了創建樹的方式,然後找到最低公共祖先,然後找到關係。

但是,我正在創建樹的問題。最初,我可以有輸入,這是不相關的,即前兩個元素不需要有直接關係(我給與員工ID和他們的經理ID 假設前兩個條目是 - 「emp-id- :1和mangr-id-2「和」emp-id:3,管理員id:4「,然後我將有兩個根,一個4,和子3,其他根= 2,子1,沒有關係。

具有完整數據集,將有關係,如何解決這個問題

注意:在一個文件中,我提供了完整的數據集,如果你會做樹,最終他們將成爲連接

此外,經理可以有更多一個2後輩,所以Binary Tree不會工作。

回答

1

您可以最初構建forest,並且當您有連接時,請加入林中的樹。

如果用具的確是樹狀的,那麼你最終會得到一棵樹 - 如預期的那樣。

關於「無二叉樹」 - 沒問題,請使用廣義樹。實現(在類似Java的語言)會是這樣的:

class Node<Key> { 
    Node<Key> father; 
    final Key root; 
    final List<Node<Key>> sons = new LinkedList<Node<Key>>(); 
    //constructor, methods and more fields if needed 
} 

一兩件事 - 我加入了一個額外的字典(基於哈希/基於樹)從員工/經理鍵映射到表示此員工的節點對象
如果使用上面的數據結構,地圖將類似於Map<Key, Node<Key>>

+0

有沒有更好的解決問題的方法?我給了一個JSON數組,其中包含emp-id和mangr-id,並且從該數組中,我必須在它們中的任何兩個之間找到關係。 –