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

Algorithmes et structures de données Discussion :

Fonctions de base sur un arbre binaire


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Alternant concepteur développeur
    Inscrit en
    Février 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Alternant concepteur développeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Fonctions de base sur un arbre binaire
    Bonjour,
    Malgré toute mes recherches sur différents cours sur les arbres binaires il y a certaines fonctions que j'arrive pas à trouver.Les fonctions basiques tel que définir la taille de l'arbre,chercher l'occurrence d'une valeur ou bien la trouver la valeur max sont facile à trouver et comprendre mais des fonctions comme par exemple définir si un arbre binaire est symétrique sont introuvables.Est-ce que vous avez des tuyaux la dessus?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Une fonction "compliquée" sur un arbre binaire est souvent un agrégat de fonctions "simples".
    Exprime ce que représente la symétrie dans un arbre binaire et tente de découper la fonction en différents traitements, tu vas retomber sur des fonctions que tu connais.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Une fonction "compliquée" sur un arbre binaire est souvent un agrégat de fonctions "simples".
    Exprime ce que représente la symétrie dans un arbre binaire et tente de découper la fonction en différents traitements, tu vas retomber sur des fonctions que tu connais.
    Exactement! ^^

    Pour faire simple, tu dois découper ton problème en sous problèmes.
    Tu as de la chance, il s’agit d’un arbre binaire ^^. Et même si ce n’était pas un arbre binaire, tu peux transformer n’importe quel arbre en arbre binaire pour simplifier ton problème (bref ce n’est pas le sujet ^^).

    Un arbre symétrique est un arbre de la forme :

    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                14
      |                    |
      |                    |
    (vide)              (vide)
    Donc tu n'as plus qu'à faire une fonction simple qui prend un arbre en paramètre et qui regarde si ses deux fils sont identiques ^^.
    Après une plus grosse fonction va englober celle là, etc... ^^

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par Caidriq Voir le message
    Bonjour,
    Malgré toute mes recherches sur différents cours sur les arbres binaires il y a certaines fonctions que j'arrive pas à trouver.Les fonctions basiques tel que définir la taille de l'arbre,chercher l'occurrence d'une valeur ou bien la trouver la valeur max sont facile à trouver et comprendre mais des fonctions comme par exemple définir si un arbre binaire est symétrique sont introuvables.Est-ce que vous avez des tuyaux la dessus?
    As-tu cherché une implémentation pour voir comment celle-ci est réalisé ?

    Sans allez très loin (google : binary tree search python ):
    http://www.laurentluce.com/posts/bin...ary-in-python/
    Tu peux remplacer python par un autre langage, même avec Haskell il y a des résultats correctes...

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    Comme le type arbre est une structure de donnée récursive tu as souvent intérêt à penser récursivement. Dans ton exemple d'arbre binaire symétrique tu pars de la définition :

    un arbre binaire A est symétrique ssi :
    • A est un arbre vide
    • ou si son fils gauche et son fils droit sont miroirs l'un de l'autre


    Il te faut ensuite trouver une expression pour «miroir» ...

    deux arbres binaires A et B sont miroirs l'un de l'autre ssi :
    • A et B sont tous les deux des arbres binaires vides
    • ou, ni A ni B ne sont des arbres binaires vides et le fils gauche de l'un est le miroir du fils droit de l'autre


    Penser récursivement sur les arbres binaires consiste donc en général à dégager une propriété récursive sur les fils et à ne pas oublier les conditions d'arrêts (arbre vide, feuille, ...).

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Penser (...) à ne pas oublier les conditions d'arrêts
    Ce serait bien de s'appliquer à soi-même les conseils. Ta définition n'a pas de condition d'arrêt.
    (arbre vide, feuille, ...)
    Ben justement, tu ne parles pas des feuilles (arbre avec 1 branche). Par contre tu parles des arbres vides et des arbres à 2 branches.

    En plus, ta définition est redondante. Et elle déplace de "symétrique" vers "miroir", ce qui ne fait pas avancer.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Ce serait bien de s'appliquer à soi-même les conseils. Ta définition n'a pas de condition d'arrêt.
    Ben justement, tu ne parles pas des feuilles (arbre avec 1 branche). Par contre tu parles des arbres vides et des arbres à 2 branches.

    En plus, ta définition est redondante. Et elle déplace de "symétrique" vers "miroir", ce qui ne fait pas avancer.
    Bonjour,

    Une feuille est un arbre dont le fils gauche et le fils droit sont des arbres vides et non pas un arbre à une branche. On pourrait compliquer les définitions en y ajoutant des conditions d'arrêt supplémentaires pour éventuellement éviter une descente récursive ...

    Mes définitions me semblent tout à fait correctes.
    «symétrique» est une propriété définie sur un arbre, une fonction qui prend un arbre en argument et qui renvoie un booléen. Elle ne renvoie vrai soit si l'arbre passé en argument est un arbre vide soit le résultat de la fonction miroir appliquée à ses deux fils. Il n'y a pas de récursivité ici, et si tu prends le temps d'essayer cela sur une feuille tu verras que cela fonctionne parfaitement.

    «miroir» est une relation liant deux arbres, une fonction qui prend deux arbres en arguments et qui renvoie un booléen. Cette fonction s'implémente élégamment de manière récursive. Elle ne renvoie vrai que dans deux cas : soit les deux arguments sont des arbres vides, soit aucun des deux ne l'est et dans ce cas il faut que le fils gauche de l'un soit le miroir du fils droit de l'autre. Dans tous les autres cas cette fonction renvoie faux. Cela fonctionne correctement pour les feuilles, tu pourras t'en rendre compte facilement en essayant de le faire manuellement.

    Tu t'aperçois également que ces deux fonctions ne font pas du tout la même chose et suivent simplement une définition.

    En disant tout cela, je pense que le primo postant pourra aisément créer les algo correspondant et appliquer cela à d'autres problèmes sur les arbres.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Alternant concepteur développeur
    Inscrit en
    Février 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Alternant concepteur développeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Et bien merci,je sais pas si je vais y arriver mais ça me fais bien avancer en tout cas!

Discussions similaires

  1. Cherche cours et exercices sur les arbres binaires
    Par dzsystem dans le forum Pascal
    Réponses: 3
    Dernier message: 01/03/2009, 22h34
  2. Cours sur les arbres binaires
    Par Fredo123456 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 09/10/2008, 16h45
  3. Questions diverses sur les Arbres binaires + insertion d'un fils
    Par beegees dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 18/03/2008, 01h21
  4. Demande sur les arbres binaire
    Par IDE dans le forum C++
    Réponses: 12
    Dernier message: 02/12/2007, 17h55
  5. fonction de base d'un arbre binaire
    Par abdelkaderg54 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/04/2007, 17h52

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