--(2.0) Faca um programa que atravesse um grafo seguindo as instrucoes --existentes em cada no', retornando como resultado uma lista com --as informacoes dos nos e folhas visitados. {- va' pelo caminho da esquerda, da direita ou do meio -} data Instrucao = E | D | M deriving (Show) data Grafo instr informacao = Folha informacao | No instr informacao (Grafo instr informacao) (Grafo instr informacao) (Grafo instr informacao) deriving (Show) --(2.0) Faca uma Funcao que troque o caminho de cada no' (de esquerda para --direita e vice-versa). --troca :: Grafo Instrucao Char -> Grafo Instrucao Char --(2.0) Prove que -- troca (troca x) = x --(3.0) Faca uma funcao que procure uma informacao em um grafo, -- retornando o caminho (lista de instrucoes) para chegar nela. -- (ignorando as instrucoes existentes nos nos). -- Note que o grafo podera' ter varios nos com a mesma informacao, -- retorne o caminho mais curto. --qualcaminho :: a -> Grafo Instrucao a -> [Instrucao] arv :: Grafo Instrucao Char arv = No E 'x' (No D 'a' (No D 'b' (No E 'r' (Folha 'c') (Folha 'v') (Folha 'w')) (No D 'g' (Folha 'j') (Folha 'h') (Folha 't')) (No M 'n' (Folha 'i') (Folha 'k') (Folha 'v')) ) (No D 's' (No E 'r' (Folha 'f') (Folha 'v') (Folha 'w')) (No D 'g' (Folha 'x') (Folha 'y') (Folha 'o')) (No M 'n' (Folha 't') (Folha 'k') (Folha 'v')) ) (No E 't' (Folha 'h') (Folha 'p') (Folha 'a')) ) (No M 't' (Folha 'a') (Folha 'b') (Folha 'c')) (No M 'u' (Folha 't') (Folha 'u') (Folha 'v'))