Thuật toán này thực hiện công việc tuyệt vời để duyệt qua các nút trong biểu đồ.C# Traversal đồ thị
Dictionary<Node, bool> visited = new Dictionary<Node, bool>();
Queue<Node> worklist = new Queue<Node>();
visited.Add(this, false);
worklist.Enqueue(this);
while (worklist.Count != 0)
{
Node node = worklist.Dequeue();
foreach (Node neighbor in node.Neighbors)
{
if (!visited.ContainsKey(neighbor))
{
visited.Add(neighbor, false);
worklist.Enqueue(neighbor);
}
}
}
Tôi có thể sử dụng nút này để tìm nút đích trong biểu đồ. Các danh sách công việc (hoặc bật) các mục khi danh sách công việc được xử lý. Khi tôi tìm thấy mục tiêu làm thế nào tôi có thể trả về đường dẫn đầy đủ đến nút?
Cập nhật Tôi đang cố gắng tìm ra cách đảo ngược đường dẫn đến thư mục gốc. Phương thức này được gọi trên nút gốc, sau đó, trẻ em có thể có hai cha mẹ, do đó, nó không đơn giản như gọi thuộc tính cha mẹ trên mỗi nút và duyệt qua sao lưu.
Mục tiêu của phương pháp là tìm đường dẫn, không lặp lại tất cả các nút hoặc để kiểm tra xem nút có tồn tại hay không.
bạn có π.Thêm (hàng xóm, đã truy cập); và giá trị của từ điển π là một nút, bạn đang theo dõi gì trong giá trị? – blu
Tiền thân. Từ điển ở đây thực sự hoạt động như một hàm: cho một giá trị đầu vào n, cung cấp cho nút tiền thân. Dữ liệu đầu vào là khóa, giá trị trả về là giá trị. –
Sẽ không phải là π.Thêm (hàng xóm, nút) ;? Khái niệm này có vẻ tốt, nhưng mã không hợp lệ, tôi chỉ nghĩ đó là lỗi đánh máy. – blu