Menu
CoddyTech

Lowest Common Ancestor of a Binary Tree

힙 순서로 배열 root에 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, 비어 있는 위치는 -1로 표시됩니다. 값은 서로 다르며 어떤 순서도 따르지 않습니다.

서로 다른 두 노드의 값인 p와 q의 최소 공통 조상, 즉 두 노드를 모두 포함하는 서브트리 중 가장 깊은 노드의 값을 반환하세요. 서브트리에는 최상위 노드도 포함되므로, q가 p 아래에 있으면 정답은 p입니다.

함수

lowestCommonAncestor(root: integer-array, p: integer, q: integer) → integer
rootinteger-array
레벨 순서로 표현한 이진 트리이며, 빈 위치는 -1로 표시합니다
pinteger
노드 하나의 값
qinteger
다른 노드의 값
반환값integer
하위 트리에 p와 q를 모두 포함하는 가장 낮은 노드의 값

제약 조건

  • 2 ≤ root.length ≤ 32767
  • 각 root[i]는 -1이거나 0 ≤ root[i] ≤ 104인 값입니다.
  • root[0]은 절대로 -1이 아니며, 트리에는 노드가 최소 두 개 있습니다.
  • 배열은 마지막 노드 뒤에 추가 -1 항목이 있을 수 있습니다.
  • 빈 자리의 두 자식도 모두 비어 있으며, 깊이는 최대 14입니다.
  • 트리의 모든 값은 서로 다르며, 특정한 순서를 따르지 않습니다.
  • p와 q는 트리에서 서로 다른 두 노드의 값이며, 순서는 상관없습니다.

예제

입력
root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]p = 6q = 9
출력
3
설명
6은 3의 왼쪽 자식이고, 9는 3의 오른쪽에 있는 4 아래에 있으므로 두 값은 3에서 만납니다. 값을 비교하면 루트 8을 가리키게 됩니다. 6은 더 작고 9는 더 큽니다.
challenge icon

후속 질문

p 또는 q가 없을 수도 있고 답이 -1인 경우, 단일 패스에서 어떤 지름길이 작동하지 않으며, 한 번의 순회로 어떻게 여전히 완료할 수 있나요?

코드 초기화
def lowestCommonAncestor(root, p, q):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]
p = 6
q = 9

예상 출력

3