트리에서 임의의 두 노드 사이의 경로를 계산하려고합니다 (Java로 구현 됨). 문학에 해결책이 있습니까?트리에서 두 노드 사이의 경로 길이를 찾는 방법은 무엇입니까?
답변
10(root)
/\
8 11
/\ \
7 9 15
거리 (7, 9) =
이 우리가 계산할 수있는 거리 (루트, 7) = 2, 계산 거리 (루트 :
은 다음과 같이이어야한다 , 9) = 2, LCA (7, 9) = 8. LCA는 "가장 낮은 공통 조상"을 나타냅니다. 따라서 distance(7, 9) = distance(root, 7) + distance(root, 9) - 2*distance(root, LCA) = 2 + 2 - 2*1 = 2
이제 방법을 볼 수 있습니다. 당신을위한 진짜 질문은 거리 (루트, anyNode)를 계산하는 방법입니다. 이것은 일반적인 질문입니다. 원하는 노드까지의 거리를 찾는 방법을 곧 찾을 수 있다고 가정합니다.
입력이 dist (11,15)이면 어떻게됩니까? 내 트리는 임의적이고 2 진수가 아니므로 결과는 1이어야합니다. 그러나 dist (root, 11) = 1 + dist (root, 15) = 2 -2 * dist (root, lca) = 0 ... 이것은 물론 잘못된 것입니다. 이 문제를 어떻게 다룰 것인가? 아니면이 경우의 lca 자체가 11입니까? – user840718
예! 언급 한 사례는 다음과 같습니다. dist (root, 11) + dist (root, 15) - 2 * LCA (root, LCA) = 1 + 2 - 2 * 1 = 1. LCA는 11 자체입니다. "가장 낮은 공통 조상"을 찾으려고 할 때 항상 루트에서부터 시작하십시오. 따라서 node11의 경로는 10 - 11이고 node15의 경로는 10 - 11 - 15이므로 LCA는 11입니다. –
공통 조상을 사용하여 트리에서 두 노드 사이의 거리를 계산할 수 있습니다.
Dist(n1, n2) = Dist(root, n1) + Dist(root, n2) - 2*Dist(root, lca)
가장 낮은 공통 조상을 찾는 방법은 루트에서 n1과 n2까지의 경로를 비교하는 것입니다. 공유 경로의 마지막 노드는 LCA입니다. –
- 1. 트리에서 노드 집합 사이의 최장 경로 찾기
- 2. 노드 트리에서 NodeData를 찾는 방법은 무엇입니까?
- 3. BFS를 사용하여 두 노드 사이의 거리를 찾는 방법은 무엇입니까?
- 4. 노드 집합 사이의 연결을 찾는 방법은 무엇입니까?
- 5. 노드 간의 경로 길이를 나타내는 데이터 구조?
- 6. 트리에서 노드 경로 가져 오기
- 7. 알고리즘이 무향 된 트리에서 경로를 찾는 것
- 8. 두 그래프 노드 사이의 고정 길이 경로
- 9. 두 노드 사이의 최단 경로 찾기 (정점)
- 10. 두 도형 사이의 최단 경로 찾는 법?
- 11. Google지도 경로 길이를 찾는 방법
- 12. 두 장소 사이의 위치를 찾는 방법은 무엇입니까?
- 13. 노드 간의 경로 길이를 계산 하시겠습니까?
- 14. 세트의 길이를 찾는 방법은 무엇입니까?
- 15. 자유 트리에서 두 노드 사이의 최장 거리를 찾는 선형 시간 알고리즘?
- 16. 한계가있는 경계가없는 가중치가있는 undirected 그래프에서 두 노드 사이의 모든 경로
- 17. 이진 트리에서 최대 거리에있는 두 노드
- 18. 주어진 두 개의 디렉토리 트리에서 동일한 파일을 찾는 방법은 무엇입니까?
- 19. 트리에서 노드 찾기
- 20. 특정 경로를 따라 두 지점 사이의 거리를 찾는 방법은 무엇입니까?
- 21. Postgis에서 포인트를 따라 경로 길이를 찾는 것
- 22. 이진 트리에서 최단 분기 길이를 반환하는 알고리즘
- 23. 서버 측에서 CheckBoxlist의 길이를 찾는 방법은 무엇입니까?
- 24. 리터럴 배열의 길이를 찾는 방법은 무엇입니까?
- 25. 문자열 배열의 길이를 찾는 방법은 무엇입니까?
- 26. 요청 변수에서 배열 길이를 찾는 방법은 무엇입니까?
- 27. gstreamer로 미디어 길이를 찾는 방법은 무엇입니까?
- 28. NSData 배열의 길이를 찾는 방법은 무엇입니까?
- 29. C 언어로 배열의 길이를 찾는 방법은 무엇입니까?
- 30. AutoHotkey에서 연관 배열의 길이를 찾는 방법은 무엇입니까?
데이터 구조, 코드에서 트리를 나타내는 방법에 따라 다릅니다. –