이진 트리에서 노드를 삭제하려면 노드를 검색해야합니다. 이는 최소 O (log N) 및 최대 O (N)에서 가능합니다. 노드에 따라 포인터를 다시 정렬해야합니다. 우리는 어떻게 그것의 시간 복잡성을 계산합니까?이진 트리에서 노드를 삭제할 때의 시간 복잡도는 무엇입니까
답변
대부분의 복잡성으로 인해 노드가 검색됩니다. 일단 부모 노드가 유지되는 한 노드를 삭제하기위한 추가 할당이 있습니다. 그래서 그것은 일정한 순서입니다.
삭제 작업 방식에 따라 다릅니다. 가장 일반적인 방법은 노드의 후계자를 찾은 다음 노드를 그 후임자로 교체하는 것입니다. 이 작업은 O (h)에서 수행 할 수 있습니다. 여기서 h는 트리의 높이입니다. 최악의 경우 이것은 O (n)이지만 균형 잡힌 트리에서는 최악의 경우 O (lg n)입니다.
여기서 "최악 검색 시간은 최대 O (N)"가됩니까? 그것은 BST에서 결코 일어나서는 안됩니다. 최악의 경우 검색 및 삭제에는 최대 O (h) 여야합니다. 여기서 'h'는 트리의 높이입니다. 이 부분은 helpful article입니다.
O (h)는 병적으로 퇴화 된 나무에서 O (n) 일 수 있습니다. – templatetypedef
예 최상의 경우 복잡성 O (logn) (때 완벽하게 균형) 및
최악의 경우 복잡성 (n)은
1 O입니다 - 2 - 3 - BST 삭제 4
그러나 주요 문제 (Hibbard 삭제)는 대칭이 아니라는 것입니다. 많은 삽입 및 삭제 후에 BST는 균형이 약합니다. 연구자들은 나무의 무작위 삽입 및 삭제 높이가 충분히 길면 sqrt (n)이된다는 것을 증명했습니다. 그래서 지금은 모든 작업 (검색, 삽입, 삭제)은 sqrt (n)과 비교하여 좋지 않은 시간이 걸릴 것입니다.
BST를위한 효율적인 대칭 삭제 문제가 매우 오래 지속되어 (약 50 년) 열려 있습니다. 균형 잡힌 나무를 보장하기 위해 우리는 RedBlack Tree 등을 사용해야합니다.
- 1. 일반 트리에서 이진 트리로의 변환 복잡성
- 2. 최대 재귀 적으로 찾는 시간 복잡도는 무엇입니까
- 3. 트리에서 임의의 노드를 선택하는 방법
- 4. 시간 복잡도는 + n은 O (L)
- 5. TreeSet 반복의 시간 복잡도는 얼마입니까?
- 6. 가능한 모든 이진 트리 노드를 삭제할 수 있습니까?
- 7. Lisp의 이진 검색 트리에서 어떻게 삭제합니까
- 8. 이진 검색 트리에서 여러 노드 삭제
- 9. 트리에서 임의의 노드를 얻는 방법?
- 10. 내가 트리에서 일정 수준에서 모든 노드를 표시하고자했다
- 11. 페이지를 삭제할 때의 오류
- 12. java.util.HashMap 클래스의 keySet() 메소드의 시간 복잡도는 얼마입니까?
- 13. Java의 LinkedList에서 size() 호출의 시간 복잡도는 얼마입니까?
- 14. 클로저에서 카운트 기능의 시간 복잡도는 얼마입니까?
- 15. 이진 트리에서 노드의 첫 번째 공통 조상을 찾는 방법은 무엇입니까?
- 16. C++에서 std :: next_permutation() 함수의 시간 복잡도는 무엇입니까?
- 17. 관련된 개체를 삭제할 때의 InvalidOperationException
- 18. 거의 완전하고 완전한 이진 트리에서 요소를 검색하기위한 복잡도
- 19. 플렉스의 트리에서 특정 노드를 선택하려면 어떻게해야합니까?
- 20. 이진 검색 트리에서 가장 낮은 공통 조상
- 21. 이진 트리에서 최단 분기 길이를 반환하는 알고리즘
- 22. 이진 트리에서 주어진 노드 (또는 항목)의 미러 노드를 효율적으로 찾는 방법
- 23. Java 이진 트리에서 가장 큰 독립 노드 집합을 찾는 알고리즘
- 24. 이진 트리에서 루트를 인스턴스화 할 때 문제가 발생했습니다.
- 25. (More) 스레드 바이너리 트리에서 노드를 순환시킬 때 효율적인 잠금
- 26. 힙에서 임의 노드를 삭제할 수 있습니까?
- 27. 지시 비순환 단어 그래프에서 조회의 시간 복잡도는 얼마입니까?
- 28. 이진 트리 탐색의 복잡도
- 29. Memcached에서 레코드를 업데이트하는 것보다 레코드를 삭제할 때의 이점은 무엇입니까?
- 30. 이진 검색 트리에 노드를 임의로 추가하면 노드
+1, 멋지고 간결합니다. –