Menu
CoddyTech

Diameter of Binary Tree

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. Gốc nằm ở chỉ số 0, các nút 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. Hãy trả về đường kính của cây: số cạnh trên đường đi dài nhất giữa hai nút bất kỳ. Đường đi có thể đi qua gốc hoặc chỉ nằm trong một cây con.

Hàm

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
cây nhị phân theo thứ tự từng mức, dùng -1 cho vị trí trống
Trả vềinteger
số cạnh trên đường đi dài nhất giữa hai nút

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 thừa 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.

Ví dụ

Đầu vào
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
Đầu ra
4
Giải thích
Đường đi 7, 4, 3, 8, 6 có năm nút và bốn cạnh. Đường đi rẽ tại nút gốc: ba cạnh xuống bên trái, một cạnh xuống bên phải.
challenge icon

Câu hỏi mở rộng

Bạn sẽ trả về đường đi đó như thế nào, gồm các giá trị nút từ đầu này đến đầu kia của đường kính?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

4