inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘

레드블랙트리 #1강의 RightRotate 질문드립니다.

298

DWG담

작성한 질문수 17

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

Rookiss

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


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

이게 맞습니다.

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

0

DWG담

빠른답변 감사합니다~

헤더파일에 관한 질문

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