Bonjour,
Je souhaite faire une fonction (tree-leaves a) qui retourne les feuilles de l'arbre a.
Par exemple,
(tree-leaves '(1)) => (1)
(tree-leaves '(1 2)) => (1 2) ou (2 1)
(tree-leaves '(1 (2 3) 4)) => (1 2 3 4) ou (4 3 2 1) etc.
J'ai essayé comme ceci :
Code Lisp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 (defun tree-leaves (a) (if (atom a) a (if (null (cdr a)) (cons (tree-leaves (car a)) NIL) (cons (tree-leaves (car a)) (tree-leaves (cdr a))))))
Pour les deux premiers exemples, le résultat renvoyé est le bon.
Mais j'ai des problemes de paranthèses quand j'ai une liste dans ma liste...
En effet, (tree-leaves '(1 (2 3) 4)) => (1 (2 3) 4)
Ma fonction ne fait rien d'autre qu'une copie au final.
Comment je peux m'en sortir pour me débarasser de ces parantheses ? Merci.
Partager