2013-07-20 6 views
0

질문은 "직원 ID와 관리자 ID 세트가 주어졌으며 관리자도 직원입니다 .2 명의 직원 ID가 주어지면 작업은 그 (것)들 사이 관계 "초기 관계가없는 트리 구조의 요소들 사이의 관계 찾기

나는 나무를 창조하고, 가장 낮은 일반적인 조상을 찾아 내고, 그 후에 관계를 찾아내는 방법을 생각했다.

하지만 문제는 내가 나무를 만드는 중입니다. 처음에, 나는 관련이없는 입력을 가질 수 있습니다. 즉, 처음 두 요소는 그들 사이에 직접적인 관계를 가질 필요가 없습니다 (직원 ID와 관리자 ID가 주어졌습니다.) 처음 두 항목은 "emp-id- : 1 및 mangr-id-2 "와"emp-id : 3, manager id : 4 "를 입력하면 두 개의 루트가 생깁니다. 하나는 4, 다른 하나는 3, 다른 루트는 2, 자식은 1입니다. 전체 데이터 세트와

,있을 것이다 관계는이 문제를

주를 해결하는 방법 :. 당신이 나무를 만들 경우 하나 개의 파일에서, 나는이 전체 데이터 세트와 함께 제공하고, 결국은 연결이 될 것

.

또한 관리자는 2 학년생인데 이진 트리는 작동하지 않습니다.

답변

1

처음에는 forest을 빌드 할 수 있으며 연결되면 포리스트의 트리에 참가할 수 있습니다.

hirerchy가 실제로 나무와 같은 경우 그렇게하면 예상대로 나무가 생깁니다.

"이진 트리 없음"과 관련하여 문제가 없으면 일반화 된 트리를 사용하십시오. 나는 직원/관리자 키에서지도하는 추가 사전 (베이스의 해시 기반/트리) 을 추가 할 것입니다 -

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

문제를 해결하는 더 좋은 방법이 있습니까? emp-id와 mangr-id가 들어있는 JSON 배열을 얻었고이 배열에서 2 개 사이의 기발성을 찾아야합니다. –

관련 문제