Một trung vị của một AVL. Làm thế nào để tận dụng lợi thế của AVL?


8

Đâ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:

  1. Đi qua cây đã cho, trả về số lượng phần tử.
  2. Đi qua n / 2 + 1(nếu nlà số lẻ) cây lại áp dụng cách đi bộ theo thứ tự. Giá trị của n / 2 + 1phầ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?


1
Liên kết đã trả lời câu hỏi của bạn - bạn còn tìm kiếm gì nữa?
Yuval Filmus

Thông thường, các thuật toán tìm kiếm cho Cây tìm kiếm nhị phân hoạt động với cây AVL, nhưng với AVL, bạn có thêm sự đảm bảo rằng chiều cao của cây của bạn là logarit trong số lượng nút.
jmite

Câu trả lời:


9

Nếu bạn sửa đổi cây AVL bằng cách lưu trữ kích thước của cây con tại mỗi nút thay vì chỉ chiều cao của nó, thì bạn có thể tìm trung vị trong thời gian bằng cách sử dụng thực tế là cây được cân bằng. Để thực hiện điều này, bạn viết một thủ tục tổng quát hơn Chọn chấp nhận nút và số và tìm nút nhỏ thứ ở cây con gốc ở .v k k vO(logn)vkkv

Giả sử rằng cây con bên trái (nếu có) có các nútNếu thì chúng ta tái diễn sang cây con bên trái. Nếu thì ta trả về . Nếu không, chúng tôi lặp lại với cây con bên phải, giảm bằng .k L k = L + 1 v k L + 1LkLk=L+1vkL+1

Thời gian chạy của thuật toán này là tuyến tính theo chiều cao của cây, đó là .O(logn)


Bạn có thể vui lòng cho tôi một ví dụ?
Maksim Dmitriev

Không, bạn sẽ phải tự xây dựng một cái. Cố gắng hiểu những gì thuật toán của tôi đang cố gắng thực hiện và làm thế nào.
Yuval Filmus


0

AVL là cây tìm kiếm nhị phân với một số thuộc tính đặc biệt: đó là cây tự cân bằng. Chiều cao của nó luôn là logarit. Cây nhị phân thông thường trong một số trường hợp xấu nhất có thể được liên kết danh sách (nếu bạn thêm dữ liệu được sắp xếp) để chiều cao của nó là n. Cây AVL trong trường hợp xấu nhất là cây Wikipedia.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.