我需要找到作为所选节点的子节点的所有节点。图形是这样创建的: (setq graf1 '((A(BC)) (B(DE)) (C (FG )) (D (H)) (E(I)) (F(J)) (G( J)) (H()) (I(J)) (J()))) 所以,节点 B 的所有子节点都是(在第一级)D,E,在第二个 H,I,第三个 J。这是代码寻找第一级的孩子,但因为我是 lisp 的初学者,所以我不能让它适用于其他孩子。
(defun sledG (cvor graf obradjeni)
(cond ((null graf) '())
((equal (caar graf) cvor)
(dodaj (cadar graf) obradjeni))
(t(sledG cvor (cdr graf) obradjeni)))
(defun dodaj (potomci obradjeni)
(cond ((null potomci) '())
((member (car potomci) obradjeni)
(dodaj (cdr potomci) obradjeni )
(t(cons (car potomci)
(dodaj (cdr potomci) obradjeni) ))))
(setq graf1 '((A(B C)) (B(D E)) (C (F G )) (D (H)) (E(I)) (F(J)) (G(J)) (H()) (I(J)) (J())))