AVL 삽입 기능을 코딩하고 있습니다. 새 노드를 삽입 할 때 균형이 깨지는 노드를 어떻게 식별 할 수 있습니까? 어떤 노드의 균형 요소를 계산하는 방법을 알고 있습니다. 그러나 노드를 리프로 추가하면 균형이 깨지는 조상 노드에 대해 어떻게 알 수 있습니까? 그래서 나는 그것에 회전을 적용 할 수 있습니다. 기대해 줘서 고마워. 당신이 (내 경우에는 왼쪽 하위 트리 (높이 - 우측 서브 트리의 높이)) 균형 요소를 일단AVL 트리에서 장애가 발생한 노드를 식별하는 방법은 무엇입니까?
1
A
답변
2
,
- 균형 요인은 1보다 큰 후 현재 노드가 불균형하고 있다면 우리 Left Left case 또는 Left Right case에 있습니다. 왼쪽 대소 문자 여부를 확인하려면 새로 삽입 된 키와 왼쪽 하위 트리 루트의 키를 비교하십시오.
- 균형 계수가 -1보다 작 으면 현재 노드는 언밸런스이며 Right Right case 또는 Right Left case 중 하나입니다. 오른쪽 대문자 여부를 확인하려면 새로 입력 된 키와 오른쪽 하위 트리 루트의 키를 비교하십시오.
이 질문에 대한 답변?
4
잎을 추가하면 부모에게 하나씩 루트쪽으로 이동하고 높이 (또는 원하는 경우 깊이)를 업데이트합니다. 나무 높이를 업데이트 할 때 균형이 깨져 균형을 조정하는지 확인합니다. 그런 다음 계속해서 다시 위로 움직입니다. 덕분에 많이 알았어요
이는 AVL 트리의 루트에 대한 모든 잎에서 경로 인 이후 O(log(n))
작업입니다는 O(log(n))
노드를 포함하고 노드는
관련 문제
- 1. C++ - AVL 트리에서 노드 제거
- 2. 트리에서 노드를 삭제하는 방법은 무엇입니까?
- 3. AVL 트리에서 차 순회
- 4. AVL 트리에서 중복 키 처리
- 5. AVL은 AVL 트리에서 무엇을 의미합니까?
- 6. 예외가 발생한 필드를 식별하는 방법
- 7. 루트 자식 노드를 식별하는 방법은 무엇입니까?
- 8. 트리에서 임의의 노드를 선택하는 방법
- 9. avl 트리에서 삭제 프로 시저 구현
- 10. AVL 트리에서 노드 아래에있는 나뭇잎 수 보유
- 11. 트리에서 노드를 검색하는 GWT
- 12. avl 트리에서 노드의 균형 요소 계산
- 13. SWT 트리에서 노드를 선택하고 이름 바꾸기를 시작하는 방법은 무엇입니까?
- 14. 문자열 데이터를 기반으로 트리에서 노드를 정렬하는 방법은 무엇입니까?
- 15. 이진 검색 트리에서 리프가 아닌 노드를 계산하는 방법은 무엇입니까?
- 16. POSIX 바이너리 (tsearch) 트리에서 모든 노드를 제거하는 방법은 무엇입니까?
- 17. C++ 트리에서 노드를 검색 중
- 18. dojo 트리에서 특정 노드를 확장하십시오.
- 19. 트리에서 모든 청색 노드를 제거하십시오.
- 20. 트리에서 임의의 노드를 얻는 방법?
- 21. 바이너리 트리에서 노드를 삭제하고 찾는다.
- 22. Python의 트리에서 노드를 찾아서 반환합니다.
- 23. AVL 트리를 늘리는 방법은 무엇입니까?
- 24. AVL 트리에서 노드를 삭제하고 다시 삽입하면 항상 원래 트리가 나타날 수 있습니까? 방법?
- 25. magento xml 노드를 식별하는 방법
- 26. AVL 트리의 로그 조건
- 27. IFRAME을 식별하는 방법은 무엇입니까?
- 28. 이진 검색 트리 회전 (AVL 트리에서)으로 밸런싱
- 29. AVL 트리에서 특정 범위 내의 노드 수를 카운트
- 30. AVL 트리 삭제 및 재구성
O(1)
에서 이루어집니다 재조정 :) – essaji