La fonction doit imprimer les marquages de l'arborescence d'arguments dans des couches sous la forme d'une liste de couches. Les marques de nœud et de feuille dans chaque couche sont répertoriées de gauche à droite, c'est-à-dire, qui est le nœud le plus à gauche de la couche, le premier élément de la liste, le nœud le plus à droite est le dernier élément de la liste. L'argument de type Ord indique si les couches dans l'ordre croissant de la plus petite à la plus grande couche (TopDown) ou par ordre décroissant de la plus grande à la plus petite couche (bottomup) doivent être émisImpression d'une arborescence binaire par couche dans une liste
data Tree = Leaf Integer | Node Integer Tree Tree
type Layer = [Integer]
data Ord = BottomUp | TopDown
wLayer :: Tree -> Ord -> [Layer]
Exemple 1: Nous appelons la fonction wLayer avec des arguments
wLayer (Noeud 1 (Noeud 2 (Feuille 21) (Feuille 22)) (Noeud 3 (Feuille 31) (Feuille 32))) TopDown le résultat: [[1], [2,3 ], [21,22,31,32]]
Exemple 2: wLayer (Node 1 (Node 2 (Leaf 21) (Leaf 22)) (Node 3 (Leaf 31) (Leaf 32))) BottomUp le résultat: [[21,22,31,32], [2,3] , [1]]
comment puis-je implémenter celui-ci?
Modifier
data Tree = Leaf Integer
| Node Integer Tree Tree
type Layer = [Integer]
data Ord = BottomUp | TopDown
writeLayer :: Tree -> Ord -> [Layer]
writeLayer Leaf x = [x]
writeLayer (Node x lt rt) BottomUp = (writeLayer rt BottomUp) ++ [x] ++ (writeLayer lt BottomUp)
writeLayer (Node x lt rt) TopDown = [x] ++ (writeLayer lt TopDown) ++ (writeLayer rt TopDown)
c'est mon programme, mais il est fonctionne pas comment puis-je résoudre ce problème?
Qu'avez-vous essayé jusqu'à présent? –
J'ai ajouté mon code – marco