Đồ thị là cấu trúc dữ liệu phi tuyến tính. Dữ liệu lưu ở nút, nút kết nối bằng cạnh. Cần tìm kiếm phần tử trên đồ thị.
Có hai phương pháp: BFS (Breadth First Search) và DFS (Depth First Search).
Breadth First Search (BFS)
BFS duyệt tất cả nút của đồ thị. Chọn một nút, duyệt tất cả nút kề. Sau khi xong nút kề, chuyển sang nút khác và duyệt nút kề của nó. Cần hàng đợi (Queue). Các nút kề được thêm vào hàng đợi, khi xong lấy ra và tiếp tục.
Depth First Search (DFS)
DFS là thuật toán duyệt đồ thị. Cho đỉnh bắt đầu, khi tìm thấy đỉnh kề, đi đến đỉnh đó trước và tiếp tục tương tự. Đi sâu nhất có thể, sau đó quay lui (backtrack) để tìm đường mới.
Cài đặt lặp (iterative) dùng Stack. Đệ quy dùng stack nội bộ của lời gọi hàm.