Menu
CoddyTech

Path Sum

Bạn nhận được một cây nhị phân được lưu trong mảng tree theo thứ tự từng tầng và một số targetSum. Gốc nằm ở chỉ số 0, các con của nút ở chỉ số i nằm tại 2*i+1 (bên trái) và 2*i+2 (bên phải), -1 đánh dấu một vị trí trống và mảng có thể kết thúc bằng các phần tử -1 thừa. Trả về true nếu có đường đi từ gốc xuống một nút lá sao cho tổng các giá trị trên đường đi bằng targetSum, nếu không thì trả về false. Nút lá là nút có cả hai vị trí con đều trống.

Hàm

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
cây nhị phân theo thứ tự từng tầng, dùng -1 cho vị trí trống
targetSuminteger
tổng mà một đường đi từ gốc đến lá phải đạt được
Trả vềboolean
true nếu có đường đi nào từ gốc đến lá có tổng bằng targetSum, false nếu không

Ràng buộc

  • 1 ≤ tree.length ≤ 32767
  • Mỗi tree[i] là -1 hoặc một giá trị thỏa mãn 0 ≤ tree[i] ≤ 1000.
  • tree[0] không bao giờ là -1, vì vậy cây có ít nhất một nút.
  • Mảng có thể kết thúc bằng các phần tử -1 bổ sung sau nút cuối cùng.
  • Cả hai nút con của một vị trí trống cũng đều trống, và độ sâu tối đa là 14.
  • 0 ≤ targetSum ≤ 15000

Ví dụ

Đầu vào
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
Đầu ra
true
Giải thích
Đường đi 3, 9, 2 (các chỉ số 0, 1, 4) có tổng bằng 14, và 2 ở chỉ số 4 là một nút lá.
challenge icon

Câu hỏi mở rộng

Bạn có thể đếm số đường đi có tổng bằng targetSum nếu đường đi có thể bắt đầu từ bất kỳ nút nào và kết thúc ở bất kỳ nút nào bên dưới nó không?

Đặt lại code
def hasPathSum(tree, targetSum):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

true