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

Langage PHP Discussion :

Arbre n-aire en php


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de ilood
    Inscrit en
    Mars 2005
    Messages
    468
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 468
    Points : 529
    Points
    529
    Par défaut Arbre n-aire en php
    Bonjour,

    J'essaie de créer un arbre n-aire en php mais j'ai des doutes sur la conception de ma classe et le dév. de certaines fonctions.

    1. Est-ce que la conception de la classe Noeud vous semble juste ?
    2. Je n'arrive pas à créer une fonction recherche qui fonctionne. Où se situe mon problème?

    Mon code:
    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    class Noeud {
    	var $valeur;
    	var $noeuds;
     
    	function Noeud($v){
    		$this->valeur = $v;
    		$this->noeuds = null;
    	}
     
    	function ajouteNoeud($n){
    		$this->noeuds[] = $n;
    	}
     
    	function recherche($valeur){
    		if($this == null) return false;
    			else if($this->valeur == $valeur) return true;
    				else if($this->noeuds != null)
    					foreach($this->noeuds as $node)
    						$node->recherche($valeur);
    	}
     
    	function affiche(){
    		echo "<ul>\n\t<li>".$this->valeur."\n";
    		if($this->noeuds != null)
    			foreach($this->noeuds as $node){
    				$node->affiche();
    			}
    			else echo "</li>";
    		echo "\n</ul>";
    	}
    }
    ?>
    Merci

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    L'arbre n-aire, c'est bien l'équivalent du pattern Composite ?

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Dans ta classe il manque à Noeud un nom et la notion de Parent. Un noeud a des enfants qui eux, ont un parent.

    Aussi, la fonction recherche pourrait renvoyer un Noeud et non un booléen.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $noeud = $this->recherche('voiture'); 
    if(!is_null($noeud)){
        echo $noeud->nom;
    }

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Je pense qu'il est préférable d'initialiser le tableau dans le constructeur pour que les fonctions de tableau soient accessibles sans tests.

    Code php : 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
    21
    22
    23
    24
    25
    26
    27
    <?php
    class Noeud {
    	public $valeur;
    	public $noeuds;
     
    	public function __construct($v){
    		$this->valeur = $v;
    		$this->noeuds = array(); // même s'il n'y a pas de noeuds, il doit y avoir un tableau
    	}
     
    	public function ajouteNoeud($n){
    		$this->noeuds[] = $n;
    	}
     
    	public function recherche($valeur){
                // pas testé ton code
            }
     
    	public function affiche(){
                // pas testé ton code
    	}
     
            public function hasChilds() {
                return (count($this->noeuds) > 0);
            }
    }
    ?>

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/08/2009, 16h40
  2. Parcours en profondeur d'un arbre n-aire
    Par Premium dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 09h01
  3. [debutant] parcours en profondeur arbre n-aire
    Par tx dans le forum Langage
    Réponses: 1
    Dernier message: 15/02/2006, 04h56
  4. construire un arbre n-aire
    Par emidelphi77 dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 19h47
  5. arbre n-aire delete
    Par Fry dans le forum C++
    Réponses: 13
    Dernier message: 19/10/2004, 22h22

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