Menu
CoddyTech

Symmetric Tree

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

배열 tree에 레벨 순서로 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i에 있는 노드의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 빈 자리를 나타내고, 배열 끝에는 여분의 -1 항목이 있을 수 있습니다. 루트를 지나는 수직선을 기준으로 트리가 자기 자신의 거울상이라면 true를 반환하고, 그렇지 않으면 false를 반환하세요. 모양과 값이 모두 일치해야 합니다.

함수

isSymmetric(tree: integer-array) → boolean
treeinteger-array
빈 자리는 -1로 표시한 레벨 순서 이진 트리
반환값boolean
트리가 자기 자신과 대칭이면 true, 그렇지 않으면 false

제약 조건

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

예제

입력
tree = [1, 2, 2, 3, 4, 4, 3]
출력
true
설명
트리를 가운데에서 접으세요. 인덱스 1과 2에 있는 두 개의 2가 만나고, 인덱스 3과 6에 있는 바깥쪽 3이 만나며, 4와 5에 있는 안쪽 4가 만납니다.

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

challenge icon

후속 질문

모양은 서로 대칭이지만 일부 값이 다르다면, 트리를 대칭으로 만들기 위해 최소 몇 개의 노드 값을 바꿔야 할까요?

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

케이스 1

케이스 2

케이스 3

입력

tree = [1, 2, 2, 3, 4, 4, 3]

기대값

true