Menu
CoddyTech

Diameter of Binary Tree

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

레벨 순서로 배열 tree에 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i의 노드의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 비어 있는 위치를 나타내고, 배열 끝에 추가 -1 항목이 있을 수 있습니다. 트리의 지름, 즉 임의의 두 노드 사이에서 가장 긴 경로의 간선 수를 반환하세요. 경로는 루트를 지날 수도 있고 하나의 하위 트리 안에 머물 수도 있습니다.

함수

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
레벨 순서로 표시한 이진 트리이며, 빈 자리는 -1로 나타냅니다
반환값integer
두 노드 사이의 최장 경로에 있는 간선의 수

제약 조건

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

예제

입력
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
출력
4
설명
경로 7, 4, 3, 8, 6 (인덱스 9, 4, 1, 0, 2)에는 네 개의 간선으로 연결된 다섯 개의 노드가 있습니다. 루트에서 방향이 바뀝니다. 왼쪽으로 세 개의 간선이 내려가고 오른쪽으로 하나가 내려갑니다.

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

challenge icon

후속 질문

경로 자체, 즉 지름의 한쪽 끝에서 다른 쪽 끝까지의 노드 값을 어떻게 반환할 수 있을까요?

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

케이스 1

케이스 2

케이스 3

입력

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

기대값

4