인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김도현님의 프로필 이미지

작성한 질문수

코딩테스트 [ ALL IN ONE ]

[코테 적용] 👉 Postorder (후반부)

LCA 관련해서 질문이 있습니다.

해결된 질문

작성

·

17

1

LCA 코드에서 left, right 변수는 방명록 (visited) 변수와 같이 방문한 값을 저장하기 위한 용도로 사용하는 것인 가요?!

답변 2

0

[노씨데브 코치] 구운햄님의 프로필 이미지

안녕하세요, 김도현님.

해당 강의에서의 left, right는 방문표시를 위한 것이기 보다는 자식 노드를 탐색한 것에 대한 결과라고 생각하시면 됩니다.

자식 노드의 값을 얻어오기 위해서는 다시 자식노드의 자식노드를 탐색하는 재귀적인 과정을 거칩니다.

 

재귀라는 개념이 다소 복잡할 수 있는 내용입니다. 따라서 강의를 다시 들어보시고 코드도 작성해보시면서 곰곰히 생각해보시는 것을 권장합니다.

 

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

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

김도현님, 트리 탐색 문제에서 LCA(Lowest Common Ancestor) 코드는 트리를 순회하면서 각 노드를 방문하고, 특정 조건에 맞는 값을 리턴하기 위해 작성됩니다. LCA 알고리즘에서 leftright 변수는 재귀적으로 트리의 왼쪽과 오른쪽 하위 트리를 탐색하면서 반환된 결과를 저장하기 위해 사용됩니다. 이는 방문 여부를 기록하기 위한 visited 배열과는 다르지만, 특정 노드에서의 탐색 결과를 기억한다는 점에서는 유사하다고 볼 수 있습니다.

즉, leftright는 각각 현재 노드의 왼쪽과 오른쪽 자식 노드를 방문한 결과를 저장하고, 이를 활용해 최소 공통 조상을 찾는 데 사용됩니다.

LCA 문제에 관한 다른 답변들을 참고하실 수 있는 몇 가지 링크를 제공드립니다:
- “트리에 관해 질문 있습니다”
- “제 경우에는 이렇게 코드를 짜봤는데 이것도 맞을까요?”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.