Algorithm 查找树结构中元素之间的关系,其中没有初始关系

Algorithm 查找树结构中元素之间的关系,其中没有初始关系,algorithm,tree,Algorithm,Tree,问题是这样的:“给你一组员工id和经理id,经理也是一名员工。给你任何两个员工id,任务是找到他们之间的关系” 我想到了创造树的方法,然后找到最底层的共同祖先,然后找到关系 但是,我在创建树时遇到了一个问题。最初,我可以有不相关的输入,即前两个元素之间不需要有直接关系(我有员工id和他们的经理id)。 假设前两个条目是--“emp id-:1和mangr-id-2”和“emp id:3,manager id:4”,那么我将有两个根,一个有4,子3,另一个根=2,子1,没有关系 有了完整的数据集,

问题是这样的:“给你一组员工id和经理id,经理也是一名员工。给你任何两个员工id,任务是找到他们之间的关系”

我想到了创造树的方法,然后找到最底层的共同祖先,然后找到关系

但是,我在创建树时遇到了一个问题。最初,我可以有不相关的输入,即前两个元素之间不需要有直接关系(我有员工id和他们的经理id)。 假设前两个条目是--“emp id-:1和mangr-id-2”和“emp id:3,manager id:4”,那么我将有两个根,一个有4,子3,另一个根=2,子1,没有关系

有了完整的数据集,就有了关系。如何解决这个问题

注意:在一个文件中,我提供了完整的数据集,如果您创建树,最终它们将连接起来

此外,一个管理器可以有2个以上的JUnitor,因此二叉树将不起作用。

您可以先构建一个JUnitor,当您有连接时,将树连接到林中

如果雇佣者真的像树一样,那么你最终会得到一棵树——正如预期的那样

关于“无二叉树”-没问题,使用通用树。实现(类似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
}
类节点{
节点父亲;
最终键根;
最终列表=新的LinkedList();
//构造函数、方法和更多字段(如果需要)
}
还有一件事-我将添加一个额外的字典(基于哈希/基于树的),以从employee/manager键映射到表示此员工的节点对象。

如果使用上述数据结构,映射将类似于
map

有没有更好的方法来解决这个问题?我得到了一个JSON数组,其中包含emp id和mangr id,从该数组中,我必须找到它们之间的关系。