问题就像“你被赋予一组员工ID和经理ID,经理也是一名员工。鉴于任何2名员工ID,任务是找到他们之间的关系”
我想到了创建树的方式,然后找到最常见的祖先,然后找到关系。
但是,我正在创建树的问题。最初,我可以输入不相关的输入,即前两个元素不需要在它们之间有直接关系(我给出了员工ID和他们的经理ID。 假设前两个条目是 - “emp-id-:1和mangr-id-2”和“emp-id:3,manager id:4”,那么我将有两个根,一个有4个,子3个,其他root = 2,和子1,没有关系。
有了完整的数据集,就会有关系。如何解决这个问题
注意:在一个文件中,我提供了完整的数据集,如果您将创建树,最终它们将被连接。
另外,经理可以有2个以上的小辈,所以Binary Tree将无法工作。
答案 0 :(得分: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>>
。