"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 삭제 메소드 구현

삭제 메소드 구현

2024-07-31에 게시됨
검색:464

AVL 트리에서 요소를 삭제하는 것은 트리 균형을 다시 조정해야 한다는 점을 제외하면 BST에서 요소를 삭제하는 것과 동일합니다. BST에서 요소 삭제 섹션에서 설명한 대로 이진 트리에서 요소를 삭제하기 위해 알고리즘은 먼저 요소가 포함된 노드를 찾습니다. 현재는 이진 트리의 요소를 포함하는 노드를 가리키고 부모현재 노드의 부모를 가리킵니다. 현재 노드는 부모 노드
의 왼쪽 자식 또는 오른쪽 자식일 수 있습니다. 요소를 삭제할 때 두 가지 경우가 발생합니다.

사례 1: 아래 그림(a)에 표시된 것처럼 현재 노드에는 왼쪽 자식이 없습니다. 현재 노드를 삭제하려면 아래 그림 (b)와 같이 현재 노드의 오른쪽 하위 노드와 상위 노드를 연결하기만 하면 됩니다. 부모 노드에서 루트까지의 경로를 따라 노드의 높이가 감소했을 수 있습니다. 트리의 균형이 맞는지 확인하려면

를 호출하세요.

balancePath(parent.element);

Implementing the delete Method

사례 2: 현재 노드에는 왼쪽 자식이 있습니다. rightMost현재 노드의 왼쪽 하위 트리에서 가장 큰 요소를 포함하는 노드를 가리키고 parentOfRightMostrightMost의 상위 노드를 가리킵니다. 노드는 아래 그림 (a)와 같습니다. rightMost 노드는 오른쪽 자식을 가질 수 없지만 왼쪽 자식은 가질 수 있습니다. 현재 노드의 요소 값을 rightMost 노드의 요소 값으로 바꾸고, parentOfRightMost 노드를 rightMost 노드를 삭제하고, 아래 그림 (b)와 같이 rightMost 노드를 삭제합니다.

Image description

parentOfRightMost에서 루트까지의 경로를 따라 노드의 높이가 감소했을 수 있습니다. 트리의 균형이 맞는지 확인하려면

를 호출하세요.

balancePath(parentOfRightMost);

릴리스 선언문 이 글은 https://dev.to/paulike/implementing-the-delete-method-44k3?1 에서 복제하였습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3