티스토리 뷰
트리의 좋은 모습은 "균형 잡힌" 트리이다.
"균형 잡혔다"는 뜻은 자식 노드가 한쪽 방향으로 치우치지 않고 깊이가 비슷한 상황을 이야기한다.
이진 탐색 트리에서 삽입된 노드가 균형을 깨뜨리는 경우가 발생한다. 그럴 때 우리는 트리를 회전 시켜줘야한다.
회전에서 Left 회전과 Right 회전이 있다.
오른쪽 자식의 오른쪽 sub 트리가 문제일 때 : L회전
왼쪽 자식의 왼쪽 sub 트리가 문제일 때 : R회전
L회전은 오른쪽 자식을 부모 노드로 하고 부모 노드를 자식의 왼쪽 자식으로 편입하는 것이다.
R회전은 반대로 왼쪽 자식을 부모 노드로 하고 부모 노드를 자식의 오른쪽 자식으로 편입하는 것이다.
이번에는 조금 더 복잡한 경우를 보자.
오른쪽 자식의 왼쪽 sub 트리가 문제일 때 : RL회전
왼쪽 자식의 오른쪽 sub 트리가 문제일 때 : LR회전
한번 꺽이는 형태의 트리는 두번의 회전을 해줘야한다. 펴주는 과정이 필요하고, 펴준것을 회전시키는 것입니다.
이상 트리의 회전을 알아보았습니다.
다음에 코드로 이 회전을 구현하는 것을 해보겠습니다.
'알고리즘 이야기' 카테고리의 다른 글
[AVL 트리] 이론 (0) | 2021.01.05 |
---|---|
[알고리즘 인사이트] 최대값, 최소값 탐색하기 (0) | 2020.09.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- SW마에스트로
- 노마드코더
- DevOps
- 개발자
- ssi-at
- 파이썬
- 노개북
- 오픈소스기여
- 알고리즘
- devcon
- 프론트엔드
- 기계식 키보드
- 코딩테스트
- 프로그래머스
- 후기
- 백준
- 대전
- python
- 회고
- IT대외활동
- python3.8
- 합격
- 클린코드
- 타입스크립트
- github
- 오픈소스
- 개발자북클럽
- boj
- 개발자밋업
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함