Tôi đã thấy điều này trong một số bài báo và một người nào đó cho rằng có thể có nhiều nhất thời gian đăng nhập (n) khi chúng ta xóa một nút của cây AVL. Tôi tin rằng chúng ta có thể đạt được điều này bằng cách tạo ra một cây AVL càng lệch càng tốt. Vấn đề là làm thế nào để làm điều này. Điều này sẽ giúp tôi rất nhiều về việc nghiên cứu điều xoay vòng loại bỏ. Cảm ơn rất nhiều!Cách tạo cây AVL bị lệch càng tốt?
Trả lời
Nếu bạn muốn thực hiện một cây AVL tối đa lệch, bạn đang tìm kiếm một Fibonacci tree, được định nghĩa quy nạp như sau:
- Một Fibonacci cây trật tự 0 là trống rỗng.
- Một cây Fibonacci theo thứ tự 1 là một nút duy nhất.
- Một Fibonacci cây trật tự n + 2 là một nút có con trái là một cây Fibonacci trật tự n và có quyền trẻ em là một cây Fibonacci trật tự n + 1.
Ví dụ, đây là một Fibonacci cây trật tự 5:
các cây Fibonacci đại diện cho số tiền tối đa nghiêng rằng một cây AVL có thể có, vì nếu các yếu tố cân bằng là bất kỳ lệch nhiều yếu tố cân bằng của mỗi nút sẽ vượt quá các giới hạn đặt bởi cây AVL.
Bạn có thể sử dụng định nghĩa này đến rất dễ dàng tạo ra cây AVL tối đa lệch:
function FibonacciTree(int order) {
if order = 0, return the empty tree.
if order = 1, create a single node and return it.
otherwise:
let left = FibonacciTree(order - 2)
let right = FibonacciTree(order - 1)
return a tree whose left child is "left" and whose right child is "right."
Hope this helps!
Câu trả lời hay. Nếu chỉ có một hình ảnh để đi với nó. –
(Lưu ý đặc biệt rằng mỗi lá không có "yếu tố" cân bằng khác 0) –
- 1. cân bằng cây AVL (C++)
- 2. Làm cách nào để tạo Swf được tạo ra Ant của tôi càng nhỏ càng tốt?
- 3. Cách phát âm thanh càng sớm càng tốt?
- 4. Cách đặt chiều rộng cột càng nhỏ càng tốt?
- 5. Sự khác biệt giữa cây đỏ-đen và cây AVL
- 6. Cân bằng một cây nhị phân (AVL)
- 7. Cách tạo hình ảnh càng lớn càng tốt trong khi duy trì tỷ lệ khung hình
- 8. Ghép/Kết hợp/Nối hai cây AVL
- 9. Cây tìm kiếm nhị phân trên cây AVL
- 10. Sự khác biệt giữa cây AVL và cây trồng
- 11. trọng lượng không cân bằng cây AVL
- 12. áp dụng PageTransformer cho PagerView càng sớm càng tốt
- 13. Khi nào nên chọn cây RB, cây B hoặc cây AVL?
- 14. Tính toán càng nhiều danh sách càng tốt trong một khoảng thời gian cố định
- 15. Xử lý các khóa trùng lặp trong một cây AVL
- 16. Làm thế nào để hướng dẫn JVM để giữ chân bộ nhớ càng thấp càng tốt?
- 17. Có phải AVL Trees Evil?
- 18. Tính toán không gian trống của ma trận càng nhanh càng tốt
- 19. (Python) Đếm dòng trong một (> 10GB) khổng lồ tập tin càng nhanh càng tốt
- 20. Tại sao cây AVL trong Bản đồ OCaml sử dụng hệ số cân bằng (chiều cao chênh lệch) 2 thay vì 1?
- 21. phần chênh lệch giữa hợp nhất git cây con và git-cây con
- 22. CHỌN càng nhiều dữ liệu từ CLOB đến VARCHAR2 càng tốt, với các ký tự nhiều byte trong dữ liệu
- 23. Python: Cập nhật file XML sử dụng ElementTree trong khi bảo tồn bố trí càng nhiều càng tốt
- 24. .NET được xây dựng trong AVL-Tree?
- 25. Cây git bị hỏng?
- 26. Cách tạo cây nhị phân
- 27. Làm thế nào để chèn 20 triệu bản ghi vào cơ sở dữ liệu MySql càng nhanh càng tốt
- 28. Thuật toán chênh lệch 'tốt nhất'
- 29. jquery kiểm soát tốt nhất mà tạo ra cây
- 30. PostgreSQL: càng thấp LIMIT, càng chậm truy vấn
Xem thêm: http://stackoverflow.com/questions/19622572/how-to-generate-maximally-unbalanced-avl-trees –