Menu
CoddyTech

Invert Binary Tree

쉬움트리 순회python iconjava iconcpp iconc iconjs icon+10

레벨 순서로 배열 tree에 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i에 있는 노드의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 비어 있는 위치를 나타내고, 배열 끝에는 추가 -1 항목이 있을 수 있습니다.

트리를 뒤집으세요. 즉, 모든 노드의 왼쪽 자식과 오른쪽 자식을 서로 바꿔 전체 트리가 거울상으로 되게 하세요. 끝에 -1 항목이 없는 동일한 형식의 뒤집힌 트리를 반환하세요.

함수

invertTree(tree: integer-array) → integer-array
treeinteger-array
레벨 순서로 표현한 이진 트리이며, 빈 자리는 -1로 표시합니다
반환값integer-array
후행 -1 항목이 없는, 레벨 순서로 나열한 미러링된 트리

제약 조건

  • 1 ≤ tree.length ≤ 16383
  • 각 tree[i]는 -1이거나 0 ≤ tree[i] ≤ 1000인 값입니다.
  • tree[0]은 절대 -1이 아니므로 트리에는 노드가 하나 이상 있습니다.
  • 배열은 마지막 노드 뒤에 추가 -1 항목이 올 수 있습니다.
  • 빈 자리의 두 자식도 모두 비어 있으며, 깊이는 최대 14입니다.

예제

입력
tree = [5, 3, 8, 1, 4, -1, 9]
출력
[5, 8, 3, 9, -1, 4, 1]
설명
루트의 자식인 3과 8이 서로 자리를 바꿉니다. 그 아래에서 3 아래에 있던 1과 4는 4와 1로 바뀌고, 오른쪽 자식인 9만 있던 8은 이제 왼쪽에 자식을 두게 됩니다.

lock icon제출 시 숨은 테스트 +14개

challenge icon

후속 질문

반전된 복사본을 만들지 않고 동일한 인덱스 쌍을 사용하여 트리가 자기 자신의 거울상인지 어떻게 확인할 수 있을까요?

코드 초기화
def invertTree(tree):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

tree = [5, 3, 8, 1, 4, -1, 9]

기대값

[5, 8, 3, 9, -1, 4, 1]