Điều đầu tiên tôi nghĩ đến khi đọc câu hỏi này là: loại đồ vật nào sử dụng biểu đồ/cây? và sau đó tôi nghĩ ngược lại cách tôi có thể sử dụng chúng.
Ví dụ, có hai công dụng phổ biến của một cây:
DOM, XML và cho rằng vấn đề, giống cấu trúc cây.
Điều này cũng có ý nghĩa. Điều đó có ý nghĩa vì cách dữ liệu này cần được sắp xếp. Một hệ thống tập tin cũng vậy. Trên một hệ thống UNIX có một nút gốc, và phân nhánh xuống dưới đây. Khi bạn gắn một thiết bị mới, bạn đang gắn nó vào cây.
Bạn cũng nên tự hỏi: liệu dữ liệu có rơi vào loại cấu trúc này không? Tạo cấu trúc dữ liệu có ý nghĩa với vấn đề và phần còn lại sẽ theo sau.
Theo như dễ dàng hơn, tôi nghĩ điều đó tương đối. Bạn có tốt với chức năng đệ quy để đi qua một cây/đồ thị? Nếu bạn cần cân bằng cây thì sao?
Hãy nghĩ về một chương trình giải quyết một câu đố tìm kiếm từ. Bạn có thể vạch ra tất cả các chữ cái của từ tìm kiếm vào một đồ thị và kiểm tra các nút xung quanh để xem chuỗi đó có khớp với bất kỳ từ nào không. Nhưng bạn không thể làm điều tương tự với một mảng đơn lẻ? Tất cả những gì bạn thực sự cần làm là di chuyển một chỉ mục để kiểm tra các chữ cái ở bên trái và bên phải, và theo chiều rộng để kiểm tra các chữ cái bên trên và bên dưới. Giải quyết vấn đề này với đồ thị không khó, nhưng nó có thể tạo ra nhiều công việc và khó khăn hơn nếu bạn không cảm thấy thoải mái khi sử dụng chúng - tất nhiên điều đó sẽ không khuyến khích bạn thực hiện nó, đặc biệt nếu bạn đang học chúng.
Tôi hy vọng điều đó sẽ giúp bạn suy nghĩ về những cấu trúc này. Đối với một đề xuất về sách, tôi phải đi với Introduction to Algorithms.
Nguồn
2008-08-06 01:28:13