; busca em profundidade ; g - grafo (representado por listas de adjacencias) ; n - nó a ser visitado ; a - array de marcas (define (visita g n a) (if (not (vector-ref a n)) (begin (vector-set! a n #t) (display n) (newline) (for-each (lambda (x) (visita g x a)) (vector-ref g n))))) ; ------------------------------------------------------------------- ; busca em largura ; g - grafo (representado por listas de adjacencias) ; l - lista de nó a serem visitados ; a - array de marcas (define (visita-l g l a) (cond ((null? l) '()) ((vector-ref a (car l)) (visita-l g (cdr l) a)) (else (vector-set! a (car l) #t) (display (car l)) (newline) (visita-l g (append (cdr l) (vector-ref g (car l))) a))))