• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

레드블랙트리 #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

답변을 작성해보세요.

1

헉 -_- 맞습니다. 강의에서 바꾸다 말았네요


[2]를 y에다 붙이는 작업이라

이게 맞습니다.

고쳐서 소스를 올려놔야겠네요 확인 감사합니다!

DWG담님의 프로필

DWG담

질문자

2021.07.27

빠른답변 감사합니다~