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

 

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2013
    Messages : 18
    Points : 21
    Points
    21

    Par défaut fusionner deux n-ary arbres

    Bonjour tout le monde,

    j ai deux arbre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                                            <resultat>
         A0           A0                        A0
         |              |                        |
         A1            A1                     A1
        / \            /  \                /  /   \   \  
       A2 A3         A4  A5              A2 A3 A4 A5
    mon class Node: avec toutes sa getter et setter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Node {
    		    private String data;
    		    private Node parent;
    		    private List<Node> children;
         public Node(String data) {
    		        this.data = data;
    		        parent = null;
    		        children = new ArrayList<Node>(); //Empty list of children  
    		    }
    mon class principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private static void CompareTree(Node root2) {
    		 if(root==null) {
    			 root=root2;
     
    		 }else  {
    			 for (Node child : root.getChildren()) 
    			 {
    				 for ( Node child1: root2.getChildren())
    				 {
    					 if( child.getData()!=child1.getData()) 
    						// CompareTree(child1);
    						  child.addChild(child1);}  }
    		 }
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 611
    Points : 7 109
    Points
    7 109

    Par défaut

    Mais de rien ... c'est quoi la question ici ?

    https://leetcode.com/articles/merge-two-binary-trees/
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 441
    Points : 26 924
    Points
    26 924
    Billets dans le blog
    2

    Par défaut

    A noter, et ça n'a rien à avoir avec les arbres, la fusion, tout ça... if( child.getData()!=child1.getData()) on n'utilise ni == ni != pour comparer des chaînes !!! On utilise la méthode equals() !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2013
    Messages : 18
    Points : 21
    Points
    21

    Par défaut

    Citation Envoyé par joel.drigo Voir le message
    A noter, et ça n'a rien à avoir avec les arbres, la fusion, tout ça... if( child.getData()!=child1.getData()) on n'utilise ni == ni != pour comparer des chaînes !!! On utilise la méthode equals() !
    rien n'a changé ,, il duplique A1 toujours:
    l'exécution comme ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                        A0
                    /         \
                  /             \
                /                 \
            A1                   A1
       /  /   \   \          /  /   \   \ 
      A2 A3  A4 A5          A2 A3  A4 A5

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 441
    Points : 26 924
    Points
    26 924
    Billets dans le blog
    2

    Par défaut

    Bah, je dirais que, surtout, ce qui n'avait toujours pas changé, c'est qu'on avait toujours pas de question... donc pas de réponse.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    11 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 441
    Points : 26 924
    Points
    26 924
    Billets dans le blog
    2

    Par défaut

    Donc, pour ton problème, tu as fait précédemment une méthode qui ajoute une liste à un nœud (vu dans https://www.developpez.net/forums/d1...rbre-arraylist).

    Si tu repartais de cette idée. La différence c'est que quand on fusionne, on ne créé pas quand ça existe déjà. Donc pour la précédente question tu faisais :

    Code pseudo code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ajouter(liste d'élément, node) {
       nouveau node = créer node avec premier élément de la liste
       ajouter nouveau node à node
       si il y a des éléments dans la liste après le premier ajouter( liste des éléments après le premier, nouveau node)
    }

    si tu modifiais ça, dans l'idée, je créé que si ça n'existe pas déjà :
    Code pseudo code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ajouter(liste d'élément, node) {
       ancien node = chercher le premier élément de la liste dans les fils de node
       if ancien node existe  alors
            nouveau node = ancien node
       sinon
          nouveau node = créer node avec premier élément de la liste
          ajouter nouveau node à node
       fin si
       si il y a des éléments dans la liste après le premier ajouter( liste des éléments après le premier, nouveau node)
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. FUSIONNER DEUX COLONNES : est ce posible ?
    Par ePoX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/12/2005, 20h59
  2. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  3. [Debutant] [JTable] Fusionner deux cellules
    Par devil26 dans le forum Composants
    Réponses: 4
    Dernier message: 03/05/2005, 13h39
  4. [TreeMap] comparer et fusionner deux TreeMap
    Par LoLoSS dans le forum java.util
    Réponses: 6
    Dernier message: 06/09/2004, 11h49

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