Rechercher : dans
Par :

Creer arbre binaire

Dernière réponse le 17 avr 2009 à 18:46:58 choco90, le 17 avr 2009 à 18:11:14 
 Signaler ce message aux modérateurs

Bonjour,
je veux creer un arbre binaire en c++ avec la representation chainée svp donnez moi le programme.merci d'avance.

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « creer arbre binaire » dans :
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Linux - L'arborescence des fichiers VoirLa hiérarchie des fichiers sous Linux Pour assurer la compatibilité et la portabilité, les systèmes Linux respectent l'unique norme FHS (File Hierarchy Standard). La hiérarchie de base est la suivante : /la racine, elle contient les...

1

 scriptiz, le 17 avr 2009 à 18:46:58
  • +1

On ne va pas tout te faire pour toi je pense :)

Ce serait bien que tu commences ton Arbre et que tu nous poste ici les problèmes que tu rencontres. Ainsi nous pourrons t'aider plus spécifiquement.

Je vais quand même te donner la source Java de mon Arbre (elle date un peu), normalement tu devrais vite comprendre la logique et pouvoir l'adapter facilement au C++ si tu t'y connais un peu.

/** 
 * Classe Arbre
 * @author Scriptiz
 * @version 1.3
 */
public class Arbre 
{
	Noeud racine;
	
	public Arbre()
	{
		initialiser();
	}
	
	public void initialiser()
	{
		this.racine = null;
	}
	
	public void add(int entier)
	{
		if(this.racine == null)
		{
			this.racine = new Noeud(entier);
		}
		else
		{
			if(entier <= this.racine.getEntier())
			{
				this.racine.sousArbreGauche.add(entier);
			}
			else
			{
				this.racine.sousArbreDroit.add(entier);
			}
		}
	}
	
	public boolean contains(int entier)
	{
		if(this.racine == null)
		{
			return false;
		}
		else
		{
			if(entier < this.racine.getEntier())
			{
				return this.racine.sousArbreGauche.contains(entier);
			}
			else if(entier > this.racine.getEntier())
			{
				return this.racine.sousArbreDroit.contains(entier);
			}
			else if(entier == this.racine.getEntier())
			{
				return true;
			}
		}
		
		return false;
	}
	
	public int nombreDeNoeuds()
	{
		int z = 0;
		
		if(this.racine == null)
		{
			return z;
		}
		
		z += this.racine.sousArbreGauche.nombreDeNoeuds();
		z++;
		z += this.racine.sousArbreDroit.nombreDeNoeuds();
		
		return z;
	}
	
	public String toString()
	{
		String s = "";
		
		if(this.racine == null)
		{
			return s;
		}
		
		s += this.racine.sousArbreGauche.toString();
		s += this.racine.getEntier() + " ";
		s += this.racine.sousArbreDroit.toString();
		
		return s;
	}
	
	private class Noeud
	{
		private int entier;
		private Arbre sousArbreGauche;
		private Arbre sousArbreDroit;
		
		protected Noeud(int entier)
		{
			this.entier = entier;
			this.sousArbreGauche = new Arbre();
			this.sousArbreDroit = new Arbre();
		}

		protected int getEntier() 
		{
			return entier;
		}

		protected void setEntier(int entier) 
		{
			this.entier = entier;
		}

		protected Arbre getSousArbreGauche() 
		{
			return sousArbreGauche;
		}

		protected void setSousArbreGauche(Arbre sousArbreGauche) 
		{
			this.sousArbreGauche = sousArbreGauche;
		}

		protected Arbre getSousArbreDroit() 
		{
			return sousArbreDroit;
		}

		protected void setSousArbreDroit(Arbre sousArbreDroit) 
		{
			this.sousArbreDroit = sousArbreDroit;
		}
	}
}

Répondre à scriptiz