체크 2 경우 트리 노드는 관련된 사전 처리 (즉, 조상 자손)와체크 2 경우 트리 노드가 O으로 (상위/하위) 관계 (1)
- 은 O에서 해결 (1) 시간과 O (N)의 공간 (노드 N = #)
- 전처리는 그것의
허용된다. 나는 아래의 나의 해결책 (접근)으로 갈 것이다. 먼저 자신을 생각하고 싶다면 그만하십시오. 사전 처리를 위해
나는 (재귀 다음, 먼저 루트를 통해 아이들을 이동) 및 각 노드에 라벨을주는 사전 주문을하기로 결정했다.
라벨을 자세히 설명해 드리겠습니다. 각 레이블은 "1,2,1,4,5"와 같이 쉼표로 구분 된 자연 숫자로 구성됩니다.이 시퀀스의 길이는 (노드의 깊이 +1)과 같습니다. 예 : 루트의 레이블은 "1", 루트의 자식은 레이블 "1,1", "1,2", "1,3"등을 가질 것입니다. 다음 레벨 노드는 "1,1,1" ..., "1,2,1", "1,2,2"...
노드의 "주문 번호"은 해당 부모의 자식 목록에서 "이 노드의 1부터 시작하는 인덱스"
공통 규칙 : 노드의 레이블은 노드의 부모 레이블과 쉼표로 구성되며 "주문 번호"노드로 구성됩니다.
O (1)에서 두 노드가 관련이 있다면 (예 : 조상 - 자손), 그 중 하나의 레이블이 다른 레이블의 "접두어"인지 확인합니다. 비록 그러한 레이블이 O (N) 공간을 점유하는 것으로 간주 될 수 있는지 확실하지 않지만.
수정 프로그램이나 대체 접근법이있는 비평가가 필요합니다.
최악의 시나리오에서 모든 노드는 하나의 자식 (국수)을 가진다. – WeaselFox