IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Arbres avec N Nodes


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Arbres avec N Nodes
    Salut,

    Defini ce type de donée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type 'a arbre = Node of 'a * 'a arbre list;;
    J´ai besoin de trouver la fonction qui calcule la valeur maximum de l´arbre

    Vous pouvez m´aider?

    Merci

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Oui.

    Où rencontres-tu un problème ? Commence par calculer le maximum d'une liste (List.fold_left peut t'aider). Ensuite, adapte le code pour faire ça récursivement.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'aide
    C'est fait


    Qui, j´ai utilissé List.fold_left et List.map

    Et pour faire le parcours en preordre d'un arbre ?

    J´ai fait ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let rec p_ord = function
     
         (Node(r,[]))-> [r]
         |(Node(r,l)) -> [r] @ p_ord  l;;

    mais pourtant ça donée cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    This expression has type 'a arbre list but is here used with type 'a arbre

  4. #4
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Que dire, tout est dans le message d'erreur non ? Tu appliques p_ord à une liste d'arbres alors que c'est une fonction qui parcourt un arbre et non une liste d'arbres.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Qui, mais si la logique de la fonction est bonne ...

    ¿comment je pourrais faire pour l ´applique a une liste d´arbres ?


    Merci

  6. #6
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Disons que si c'est pas typable la "logique de la fonction" ne peut pas être bonne Plus précisément, tu cherches à traverser un arbre, mais la logique de ta fonction c'est de dire qu'on visite un noeud avant ses sous-arbres (c'est en effet nécessaire pour le préordre), sans pour autant spécifier dans quel ordre on doit visiter ces sous-arbres ! Suivant comment tu traverseras la liste, tu n'obtiendras pas le même parcours... il te faudra donc bien décider comment traverser la liste de sous-arbres d'un noeud donné et l'implémenter.
    Soit tu ajoutes une fonction qui sera mutuellement récursive avec p_ord et qui l'appelera sur tous les éléments de la liste dans un "certain" ordre, soit plus probablement tu veux les parcourir dans l'ordre "naturel" de la liste, et dans ce cas un coup de fold_left ou de map + flatten suffisent
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

Discussions similaires

  1. Interface graphique pour arbre avec deux parents par node
    Par alina dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 20/10/2009, 11h20
  2. [C#]probleme avec un node click event
    Par zmerli dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/10/2006, 17h37
  3. Parcours arbre avec les iterateurs
    Par Premium dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 24/03/2006, 15h03
  4. Initialisation d'un arbre avec liste
    Par Naruto_kun dans le forum C
    Réponses: 15
    Dernier message: 02/01/2006, 22h43
  5. [LG] Arbre avec pascal
    Par mondanikoffi dans le forum Langage
    Réponses: 1
    Dernier message: 21/07/2005, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo