티스토리 뷰
rotate_right 함수
AVLNode *rotate_right(AVLNode *parent)
{
AVLNode* child = parent->left;
parent->left = child->right;
child->right = parent;
// 새로운 루트를 반환
return child;
}
parent의 left를 child라 명한다.
child의 right를 parent의 left로 이동시킨다.
child의 right로 parent를 이동시킨다.
회전된 child 노드를 반환한다.
마지막 부분을 보면 child->right = parent;
기존의 child가 parent 자리로 가고 parent가 child의 오른쪽으로 가야하기에 이해가 쉬움
하지만 왜 parent->left = child->right; 인가?
child의 오른쪽에 parent가 들어간다면 기존에 있던 child의 오른쪽 부분은 parent에 연결해야하기 때문
이진탐색트리의 특성때문에 해당 부분은 parent의 왼쪽에 연결해야함.
적용예시 및 해설
LL에서 X노드가 parent, Y노드가 child 이다.
RL에서 하단부를 회전시킨다.
parent 는 Y노드, child는 J 노드가 된다.
J노드의 right를 Y노드의 left에 연결한다.
J노드의 right에 Y노드를 연결한다.
rotate_left 함수
AVLNode *rotate_left(AVLNode *parent)
{
AVLNode *child = parent->right;
parent->right = child->left;
child->left = parent;
// 새로운 루트 반환
return child;
}
parent의 right를 child라 명한다.
child의 left를 parent의 right로 이동시킨다.
child의 left로 parent를 이동시킨다.
회전된 child 노드를 반환한다.
적용예시 및 해설
RR에서 X노드가 parent, Y노드가 child 이다.
LR에서 하단부를 회전시킨다.
parent 는 Y노드, child는 J 노드가 된다.
J노드의 left를 Y노드의 right에 연결한다.
J노드의 left에 Y노드를 연결한다.
'전공 > 컴퓨터 코딩 데이터' 카테고리의 다른 글
C언어 정렬 shell, quick, heap sort 코드 구현, 정리 (0) | 2024.11.30 |
---|---|
임베디드 C언어 S32K144 MCU 보드 코딩 interrupt 설정 (0) | 2024.11.27 |
S32K144 MCU C언어 코딩하기(PC와 UART 통신) (0) | 2024.11.26 |
C언어 dijkstra 그래프 최단 경로 찾기 알고리즘 (0) | 2024.11.25 |
[컴퓨터구조] RISC-V 파이프라인 data/control hazards (0) | 2024.11.24 |
- Total
- Today
- Yesterday
- 카카오페이
- 알뜰폰요금제
- 파스타
- 네이버페이
- 배송기간
- 할인
- 경북대
- 10만포인트
- 메쉬 밴드
- 방향장
- 북문
- 리브엠
- 타란튤라
- 리브모바일
- 알뜰 요금제
- Liiv M
- 시계 줄
- 맛집
- 알리익스프레스
- f-94w
- a모바일
- 계산방법
- 카시오
- mealy
- 방어동작
- 교체
- f-91w
- 문서 스캔
- 오블완
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |