inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Engine Series] Part 3: Data Structures and Algorithms

Binary Search Tree

Replace함수 질문

82

작성자 없음

0 asked

0

Replace함수를 그냥 아무노드나 바꿀수 있게 되면 이진탐색트리구조가 망가질것같은데 이 함수를 사용하는편이 좋은가요?

만약 사용하면 private로 지정을 해주면 좋을것같아 질문드립니다

이진탐색트리구현을 보면 루트노드의 키값이 잘못설정될경우 한쪽으로만 길게 갈수있을것같은데 그럼 탐색에 걸리는 시간복잡도가 최대 O(n)인것 같은데 이 구조를 바꾸는 시간이 더 걸릴까요?

기술면접

Answer 2

0

kamdabin3

강의 끝부분까지 듣고 질문한게 아니어서 끝부분에 나오네요 죄송합니다

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. kamdabin3님.

질문하신 Replace 함수에 대한 궁금증은 이진 탐색 트리의 구조 유지와 성능에 관련한 중요한 사항입니다.

  1. Replace 함수의 사용: Replace 함수를 그냥 아무 노드나 바꾸게 되면 이진 탐색 트리(BST)의 속성, 즉 왼쪽 서브트리는 작은 노드, 오른쪽 서브트리는 큰 노드를 가지는 규칙이 깨질 수 있습니다. 따라서 이 함수를 사용할 때는 노드 교체가 BST의 구조를 유지하도록 유의해야 합니다. 이와 관련된 내용은 이진 탐색 트리 삭제 질문에서 확인할 수 있습니다. 강사님께서 자료구조의 특성을 이해하도록 도와주실 것입니다.

  2. 함수 접근 제한: Replace 함수를 private로 지정하는 것은 잘못 사용함으로 인해 트리 구조가 깨지는 것을 예방하는 좋은 방법입니다. 이렇게 하면 트리의 구조 조작은 클래스 내부에서만 가능하게 되고, 외부로부터의 임의 수정을 막을 수 있습니다.

  3. 시간 복잡도와 구조 개선: 이진 탐색 트리가 편향되면 시간 복잡도가 O(n)까지 증가할 수 있습니다. 이는 균형 잡힌 트리, 예를 들어 AVL 트리나 Red-Black 트리를 사용하는 경우에 해결될 수 있으며, 이 경우 삽입이나 삭제 시 회전을 통해 트리 균형을 유지하며 시간 복잡도를 O(log n)로 유지합니다.

관련 내용이나 구체적인 트리 구현 방식에 대해 궁금하신 점이 있다면 강사님의 강의 내용을 참고하는 것도 좋은 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

네트워크 전체 흐름 복습 질문

0

9

1

프로필 사진 세팅과 관련하여 질문 드립니다

1

22

2

시스템 엔지니어 관련 질문입니다.

0

36

2

구글 폼 작성 완료!

1

29

1

개발과 연관없는 경력 기입 여부

1

83

2

이직 준비 방향에 대한 조언을 구하고 싶습니다.

1

72

2

이력서 구성에 대한 질문드립니다.

1

77

2

A*, 다익스트라, Bfs차이 질문

0

171

2

closed list를 비교하는 부분이 궁금합니다.

0

118

1

부모가 2개 이상일경우 질문

0

172

2

sort함수 쓰려면 알고르즘헤더를 추가해야하는거 아닌가요?

0

187

2

빅오 표기법 2단계

0

328

1

list의 insert, erase에서 매개변수는 왜 iterator를 복사형으로 받나요?

0

290

1

Pop()함수에서 레퍼런스를 반환하지 않는 이유가 궁금합니다

0

386

3

iterator의 begin, end, insert, erase함수에서 iterator를 반환할 때 일어나는 현상이 궁금합니다

0

227

1

언리얼 part.4 는 안나오나요?

0

448

1

재귀함수 질문

0

464

1

클레스 템플릿 헤더파일 분리시 주의 사항이 있나요?

0

563

3

Pos operator< 어디서 사용하나요?

0

518

2

Disjoint Set 클래스 수정해도 괜찮나요?

0

468

1

A*알고리즘 작성과정에서 블록 안에서 초기화를 한 이유가 궁금합니다.

0

592

1

1강에서의 List와 자료구조편에서의 List의 차이가 뭘까요?

0

597

1

이진 탐색 트리 삭제 질문

0

700

1

해당 문제 유형을 수학적으로 표현 가능할까요?

0

505

1