Thư viện lớp cơ sở trong .NET có một số cấu trúc dữ liệu tuyệt vời cho các bộ sưu tập (Danh sách, Hàng đợi, Ngăn xếp, Từ điển), nhưng đủ kỳ quặc nó không chứa bất kỳ cấu trúc dữ liệu nào cho cây nhị phân. Đây là một cấu trúc hữu ích khủng khiếp cho các thuật toán nhất định, chẳng hạn như các thuật toán tận dụng các đường dẫn truyền tải khác nhau. Tôi đang tìm một cách thực hiện miễn phí, được viết chính xác.Tại sao không có lớp Tree <T> trong .NET?
Tôi chỉ đơn giản là mù, và không tìm thấy nó ... là nó chôn cất ở đâu đó trong BCL? Nếu không, ai đó có thể giới thiệu một thư viện C# /. NET mã nguồn mở hoặc miễn phí cho cây nhị phân không? Tốt nhất là sử dụng Generics.
EDIT: Để làm rõ những gì tôi đang tìm kiếm. Tôi không quan tâm đến các bộ sưu tập từ điển theo thứ tự mà nội bộ sử dụng một cái cây. Tôi thực sự quan tâm đến một cây nhị phân - một cái để lộ cấu trúc của nó để bạn có thể làm những việc như trích xuất các subtrees, hoặc thực hiện các bước sau sửa lỗi trên các nút. Lý tưởng như vậy một lớp học có thể được mở rộng để cung cấp các hành vi của cây đặc biệt (ví dụ: Red/Black, AVL, Balanced, vv).
còn LinkedList thì sao? –
Đồng ý. Thỉnh thoảng tôi có nhu cầu tìm (trong thời gian O (Log N)) hai nút đã ràng buộc một giá trị (khi giá trị không được tìm thấy trong bộ sưu tập). Ví dụ, bộ sưu tập (cây) chứa 13 và 17 (trong số những người khác) và tôi đang tìm kiếm số lớn nhất lớn hơn và nhỏ hơn 16. Cây có thể làm điều này, nhưng Từ điển, danh sách được sắp xếp và bảng băm lấy O (N) . – Les