Menu
CoddyTech

Lowest Common Ancestor of a BST

Bạn nhận được một cây tìm kiếm nhị phân được lưu theo thứ tự heap trong mảng tree: nút gốc nằm ở chỉ số 0, các nút con của chỉ số i nằm tại 2*i+1 (bên trái) và 2*i+2 (bên phải), còn -1 đánh dấu vị trí trống. Mọi giá trị trong cây con bên trái của một nút đều nhỏ hơn giá trị của nút đó, và mọi giá trị trong cây con bên phải đều lớn hơn.

Hãy viết lowestCommonAncestor, hàm trả về giá trị của tổ tiên chung thấp nhất của hai giá trị p và q, cả hai đều có trong cây: nút sâu nhất có cả hai giá trị trong cây con của nó. Một nút thuộc cây con của chính nó, vì vậy nếu p nằm phía trên q, đáp án là p.

Hàm

lowestCommonAncestor(tree: integer-array, p: integer, q: integer) → integer
treeinteger-array
cây tìm kiếm nhị phân theo thứ tự từng mức, với -1 cho vị trí trống
pinteger
giá trị đầu tiên cần tìm
qinteger
giá trị thứ hai cần tìm
Trả vềinteger
giá trị của nút sâu nhất có cả p và q trong cây con

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] ≤ 105.
  • tree[0] không bao giờ là -1, nên 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 vị trí trống cũng đều trống, và độ sâu tối đa là 14.
  • Cây là một cây tìm kiếm nhị phân hợp lệ, vì vậy tất cả các giá trị của nó đều khác nhau.
  • p và q là giá trị của các nút trong cây. Chúng có thể xuất hiện theo thứ tự bất kỳ và có thể bằng nhau.

Ví dụ

Đầu vào
tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]p = 3q = 15
Đầu ra
8
Giải thích
Khi đi lên từ 3 và 15, nút đầu tiên mà cả hai cùng gặp là 8: 3 là nút con bên trái của nó, còn 15 nằm bên dưới 12 ở nhánh phải. Nút gốc 20 cũng là tổ tiên chung, nhưng ở vị trí cao hơn.
challenge icon

Câu hỏi mở rộng

Bạn sẽ thay đổi điều gì nếu p hoặc q có thể không có trong cây và hàm phải trả về -1 trong trường hợp đó?

Đặt lại code
def lowestCommonAncestor(tree, p, q):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]
p = 3
q = 15

Đầu ra mong đợi

8