Đây là nguồn câu hỏi của tôi.
Đưa ra một cây tự cân bằng (AVL), mã hóa một phương thức trả về trung vị.
(Trung vị: giá trị số ngăn cách nửa cao hơn của mẫu dữ liệu với nửa dưới. Ví dụ: nếu chuỗi là
2, 7, 4, 9, 1, 5, 8, 3, 6
thì trung vị là 5.)
Tôi có thể đưa ra giải pháp sau:
- Đi qua cây đã cho, trả về số lượng phần tử.
- Đi qua
n / 2 + 1
(nếun
là số lẻ) cây lại áp dụng cách đi bộ theo thứ tự. Giá trị củan / 2 + 1
phần tử thứ là trung vị.
Nhưng tôi có thể làm điều đó với cây tìm kiếm nhị phân, phải không? Có một thuật toán tốt hơn cho một AVL?