Rechercher : dans
Par :

Probleme pour creer un arbre en java

stars 333, le 6 jan 2007 à 02:02:41
 Signaler ce message aux modérateurs

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>

Meilleures réponses pour « probleme pour creer un arbre en java » dans :
Java Runtime Machine VoirJava Runtime Machine Certains sites internet mais aussi certains programmes requièrent la présence de la Java Runtime Machine (JRM) pour exécuter les applets Java. Si vous n'avez pas, ou plus, cette Java Runtime...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Java - Les objets VoirLa création d'objets Un objet est une instance de classe, la création d'objets s'appelle donc l'instanciation. Cette instanciation se fait grâce à l'opérateur new suivi du nom de la classe à instancier et de parenthèses contenant les paramètres...
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...

1

HackTrack, le 22 jan 2007 à 12:55:53
  • +2

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 ...


;-)

2

fedup, le 11 fév 2008 à 20:50:06

Bonjour comment implementer une arbre genealogique en c++ svp. merci pour votre aide

3

nollla, le 1 mai 2008 à 14:23:41

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

5

 papillon2000, le 12 mar 2009 à 20:03:23

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.