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 :

Arbre ternaire complet


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut Arbre ternaire complet
    Bonjour,

    Voici mon problème, j'ai trois possibilité et un temps T, je doit énumérer les possibilité. Par exemple:

    Possibilité={a,b,c} et T= 2

    énumération={aa,ab,ac,ba,bb,bc, ca,cb,cc}

    Aussi, j'ai pensé réaliser un arbre ternaire complet de profondeur T. Quelque chose du genre, pour T=1

    racine
    / | \
    a b c

    Cependant, je ne vois pas comment réaliser l'algorithme...
    Merci d'avance

    PS: je code en Java

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Il s'agit pas tellement d'un arbre.

    Pour la profondeur, c'est bien T.

    Ensuite, tu pars de 3 noeuds a, b, c.
    A chacun tu donnes comme fils de nouveau a, b, c. Et tu répètes cela jusqu'à atteindre la profondeur T. Ca te donne :
    a - a
    a - b
    a - c
    b - a
    b - b
    b - c
    c - a
    c - b
    c - c

    Et ensuite, tu fais un parcours de profondeur T exactement pour obtenir un chemin, et tu répètes jusqu'à avoir parcouru tous les chemins possibles.

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut
    Merci, je vois bien l'idée mais je ne vois pas comment le coder...
    mon idée de base était très classique:

    class node {
    node a,b,c
    node father
    }

    class tree {
    node root
    int T
    }

    mais pour le
    A chacun tu donnes comme fils de nouveau a, b, c. Et tu répètes cela jusqu'à atteindre la profondeur T
    . Je vois pas trop comment faire. Ce ne serai qu'à la profondeur 2, j'ai 3 pères et je vois mal par comment passer de l'un a l'autre pour créer les 9 feuilles...

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    C'est pour ça que ça n'est pas un arbre. Il y a 3 racines : a,b,c.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par guyomel Voir le message
    mais pour le . Je vois pas trop comment faire. Ce ne serai qu'à la profondeur 2, j'ai 3 pères et je vois mal par comment passer de l'un a l'autre pour créer les 9 feuilles...
    Par recursion (ou par une pile).

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Node {
    	Node a,b,c;
    	Node father;
    	Node(Node father) {this.father=father;}
    }
     
    class Tree {
    	Node root;
    	int T;
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private void populate(Node n, int maxt, int t) {
    	n.a = new Node(n);
    	n.b = new Node(n);
    	n.c = new Node(n);
    	if (t>=maxt) return;
    	populate(n.a,maxt,t+1);
    	populate(n.b,maxt,t+1);
    	populate(n.c,maxt,t+1);
    }
     
    public Tree buildTree(int T) {
    	Tree tree = new Tree();
    	tree.root = new Node(null);
    	tree.T = T;
     
    	populate(tree.root, tree.T, 1);
     
    	return tree;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Créer un arbre binaire complet en C
    Par derreck dans le forum C
    Réponses: 8
    Dernier message: 27/12/2017, 23h22
  2. Afficher arbre DOM Complet avec "branches"
    Par PoMpOmWoNdErFuL dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/07/2011, 18h01
  3. Arbre Ternaire - Suppression
    Par jurio dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/08/2008, 19h48
  4. Insertion arbre ternaire
    Par line86 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 22/08/2008, 01h57
  5. Ajout dans arbre ternaire
    Par line86 dans le forum C
    Réponses: 0
    Dernier message: 27/05/2008, 22h48

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