Posez votre question Signaler

Probleme pour creer un arbre en java [Fermé]

stars 333 1Messages postés 6 janvier 2007Date d'inscription - Dernière réponse le 12 mars 2009 à 20:03
Bonjour, je suis un débutant en java et j’aurais besoin d’aide pour construire un arbre dont les étiquettes sont des entiers
pour un projet de parcours en largeur et en profondeur d’un arbre.
Je me suis documenté sur le net, je n'ai rien réussit à trouver de concret.
J’ai compris ce que mon prof a dit mais je n’arrive pas à l’implémenter.
Il a dit que l’arbre était fait de nœud et qu’il faut donc une class Arbre
Implémenté ainsi.
  
public class Arbre
{
	Noeud racine;
	int NbNoeud;
	
	public Arbre(Noeud n)
	{
		racine=n;
	}
}

Puis une classe Nœud avec la valeur du nœud, le nœud père et la liste des nœuds fils
et une classe listeNoeud pour stocker les nœuds fils.
Est-ce que quelqu’un pourrais m’aider à corriger mon code.
L’arbre doit être codé de manière simple de bout en bout et on ne peut pas faire appel à des méthodes ou class déjà établies.
Mon code à moi donne ceci mais je n’ai pas l’impression que cela crée un arbre :
 public class Arbre
{
	Noeud racine;
	int NbNoeud;
	
	public Arbre(Noeud n)
	{
		racine=n;
	}

 public static void main (String argv[])
 {
Noeud a = new Noeud (45,null);
Noeud f1 = new Noeud (23,a);
Noeud f2 = new Noeud (56,a);
a.ajoutListeNoeud (f1);
a.ajoutListeNoeud (f2);

}

import java.util.*;
class Noeud extends Arbre 
{
	int valeur;
	Noeud pere;
	ListeNoeuds fils;
	int NbFils;
	Noeud[]  listElt;
	 public Noeud(int v, Noeud p)
        {
	    valeur = v;
listElt = new Noeud[10];
for(int i=0; i<10; i++)
listElt=null;
	   
        }
	public boolean ajoutListeNoeud(Noeud n)
{
	int compt=0;
	while (listElt[compt]!=null & compt<10)
	compt++;
	if (compt==10)
	return false;
	else{
		listElt[compt]=n;
		return true;
	}
}
}	
}

merci,
Configuration: Windows XP
Internet Explorer 7.0</code>
Lire la suite 

Probleme pour creer un arbre en java »

4 réponses
Réponse
+7
moins plus
Salut!

Ne te complique pas trop la vie.


Pour la classe Noeud, implemente simplement l'interface MutableTreeNode.

Par exemple:
package trees;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeNode;

public class TreeNode_Impl implements MutableTreeNode {
	private ArrayList children;

	private MutableTreeNode parent;

	private Object userObject;

	public TreeNode_Impl() {
		this(null);
	}

	public TreeNode_Impl(Object userObject) {
		super();
		children = new ArrayList();
		this.userObject = userObject;
	}

	public void insert(MutableTreeNode child, int index) {
		if (index >= 0 && index < children.size()) {
			children.add(index, child);
		}
	}

	public void remove(int index) {
		MutableTreeNode node = (MutableTreeNode) children.remove(index);
		if (node != null) {
			node.setParent(null);
		}
	}

	public void remove(MutableTreeNode node) {
		if (children.contains(node)) {
			children.remove(node);
		}
	}

	public void setUserObject(Object object) {
		this.userObject = object;
	}

	public void removeFromParent() {
		parent.remove(this);
	}

	public void setParent(MutableTreeNode newParent) {
		this.parent = newParent;
		parent.insert(this, parent.getChildCount());
	}

	public TreeNode getChildAt(int childIndex) {
		return (TreeNode) children.get(childIndex);

	}

	public int getChildCount() {
		return children.size();
	}

	public TreeNode getParent() {
		return parent;
	}

	public int getIndex(TreeNode node) {
		if(!(children.contains(node)))
			return -1;
		return children.indexOf(node);
	}

	public boolean getAllowsChildren() {
		return false;
	}

	public boolean isLeaf() {
		return children.size()==0;
	}

	public Enumeration children() {
		return Collections.enumeration(children);
	}

	public Object getUserObject() {
		return userObject;
	}

}



Mais tu peux aussi utiliser des classes Java qui implémentent déjà ces méthodes. Par exemple: DefaultMutableTreeNode.

Je te laiss le soin de créer ta classe Arbre qui devra contenir les différents algortihmes de parcours ...


;-)

Réponse
+0
moins plus
slt comment cree un arbre de java tel que les noeuds sont les lien d'un fichier html pour q'on peut parcourir tout les liens de fichier html
merci

Réponse
-1
moins plus
bonsoir a tous,je veux faire un algoritheme pour la reches des fils(tous le sos arbre ou le nombre d'arcs à partir de ce sommet) d'un taches dans un réseau de taches.

Réponse
-3
moins plus
bonjour comment implementer une arbre genealogique en c++ svp. merci pour votre aide

Ce document intitulé « probleme pour creer un arbre en java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?