레드블랙트리 #1강의 RightRotate 질문드립니다.
298
작성한 질문수 17
void BinarySearchTree::RightRotate(Node* y)
{
Node* x = y->left;
y->left = x->right;
if (y->right != m_nil)
y->right->parent = y;
x->parent = y->parent;
if (y->parent == m_nil)
m_root = x;
else if (y == y->parent->left)
y->parent->left = x;
else
y->parent->right = x;
x->right = y;
y->parent = x;
}
위 코드에서
y->right != m_nil 조건문이
x->right != m_nil을 체크하고 x->right->parent = y;가 아닌지 궁금합니다.
x->right가 m_nil이 아닌 존재하는 노드라면 다시 y에 붙여줘야할것같은데. 회전해도 유지되는 y->right->parent를 다시 저장하는 이유가 궁금합니다. 제가 놓치고 있는게 있을까요?
AVL트리랑 매우 비슷한거같은데 머리아프네요 ㅠ
답변 1
헤더파일에 관한 질문
0
449
1
이진 탐색 트리 삭제 질문
0
720
1
해당 문제 유형을 수학적으로 표현 가능할까요?
0
523
1
vs2022 미로 줄간격
0
1604
2
pos 구조체 초기화 문제
0
507
0
맵이 이상하게 나오는데 무슨 문제인가요?
0
523
1
자동완성 기능 질문
1
535
2
push_back emplace_back 질문있습니다.
0
407
1
Container, Predicate 질문입니다.
0
410
1
_size - 2 질문
0
428
1
Disjoint Set 질문있습니다
0
444
1
우선순위 큐 구현 연습 intellisense 질문
0
409
1
int32 관련 질문
0
283
1
c++에서 처음 보는 문법
0
396
1
학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다
0
333
1
힙 정렬과 병합 정렬
0
435
1
resize 질문
0
270
1
처음 보는 for문 문법
0
400
1
환경 설정.. 궁금점
0
398
1
이 비교 연산자를 넣어주는 이유가 있나요?
0
295
1
소멸자 관련 질문
0
257
1
&의 차이
0
295
1
프레임 관리 질문입니다.
0
342
1
연산자 오버로딩 관련 질문입니다.
1
216
1





