-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
레드블랙트리 #1강의 RightRotate 질문드립니다.
21.07.27 00:53 작성 조회수 189
0
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
Rookiss
지식공유자2021.07.27
헉 -_- 맞습니다. 강의에서 바꾸다 말았네요
[2]를 y에다 붙이는 작업이라
이게 맞습니다.
고쳐서 소스를 올려놔야겠네요 확인 감사합니다!
답변 1