2010-12-03 6 views
0

ok j'ai cet arbre:par un arbre traversal dans le schéma

   a6 
     / | \ 
     a1 a2 p1 
       / \ 
       a1  a2 

et j'ai besoin du code pour le traverser. dans une représentation de liste profonde c'est comme ça? (a1 a2 (a1 a2))? J'ai déjà une méthode qui retourne les nœuds childerns. par exemple si je l'appelle, (arbre de fonction a6) = (a1 a2 p1) des idées?

Répondre

1

Je suis un peu louche sur ce que vous demandez exactement, mais je vais essayer de vous aider à démarrer.

Les représentations liste profonde de la structure de l'arbre que vous avez mentionné devrait ressembler à ceci:

'(a6 (a1) (a2) (p1 (a1) (a2))) 

il y a environ un an, j'ai écrit quelques articles de blog que vous pouvez trouver utile. Trees in Scheme: Representation et Trees in Scheme: Parsing. Dans l'article "Parsing", je démontre l'utilisation de la récurrence réciproque (une technique récursive dans laquelle deux procédures sont définies les unes par rapport aux autres) pour analyser efficacement les arbres. Cela devrait être utile.

Enfin, je vous recommande également de lire le chapitre 18 de Simply Scheme pour une introduction assez approfondie à ce sujet.

Bonne chance.