Menu
CoddyTech

Path Sum

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

레벨 순서대로 저장된 이진 트리 배열 tree와 숫자 targetSum이 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i에 있는 노드의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 비어 있는 위치를 나타내고, 배열은 끝에 여분의 -1 항목을 포함할 수 있습니다. 루트에서 리프까지 이어지는 경로 중 값의 합이 targetSum인 경로가 있으면 true를 반환하고, 그렇지 않으면 false를 반환하세요. 리프는 자식이 없는 노드입니다. 즉, 두 자식 위치가 모두 비어 있습니다.

함수

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
레벨 순서로 표현한 이진 트리이며, 빈 위치는 -1로 표시합니다
targetSuminteger
루트에서 리프까지의 경로가 도달해야 하는 총합
반환값boolean
루트에서 리프까지의 경로 중 합이 targetSum이 되는 경로가 있으면 true, 그렇지 않으면 false

제약 조건

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

예제

입력
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
출력
true
설명
경로 3, 9, 2(인덱스 0, 1, 4)의 합은 14이며, 인덱스 4에 있는 2는 리프입니다.

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

challenge icon

후속 질문

경로가 루트에서 리프까지 이어지는 경우뿐 아니라 어떤 노드에서든 시작해 그 아래의 어떤 노드에서든 끝날 수 있을 때, targetSum이 되는 경로의 수를 셀 수 있나요?

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

케이스 1

케이스 2

케이스 3

입력

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

기대값

true