Arbre 2-3-4

Fermé
anis - 20 nov. 2011 à 11:40
 anis - 20 nov. 2011 à 15:07
Bonjour,
S'il vous plais j' ai besoin d'une petite aide sur comment en fais l'éclatement dans les arbres 2-3-4?En faite d'après le cours que je l'ai lu sur les arbres 2-3-4 , l'éclatement se fais lorsqu'on ajoute un élément dans une arbre, c'est à dire si on un fils qu'a 3 élément, on crée 2 fils, on fait monter l'élément au milieux élément[1] et on l'ajoute dans le neoud père, si de même le père contient 3 élément on l'éclate aussi .
J'ai pas compris comment je fais cette fonction, j'ai commencé de faire la fonction ajouter de cette manière:
   public void AjouterElement(int Elem , Abre2_3_4 A)
	{
    	  int nobrfils = A.racine.length+1;
    	  if(A.ArbreVide())
		{
			A.racine[0]=Elem;		
		}
		
	    else
	    {
			switch(nobrfils)
			{
			case(2):
			{
				
		        if(Elem<A.racine[0])
		       {
		        	
		                eclate(fils1);
		         AjouterElement(Elem,fils1);
		       }
		       else
		       {
		    	   
		    	eclate(fils2);
		    	AjouterElement(Elem,fils2);
		       }
		        break;
			}
		    case(3):
		    {
		       if(Elem<A.racine[0])
		       {
		    	   
		    	   eclate(fils1);
		    	   
		    	   AjouterElement(Elem, fils1);
		       }
		       else if(A.racine[0]<Elem && Elem<A.racine[1])
		       {
		    	   
		    	   eclate(fils2);
		    	   AjouterElement(Elem, fils2);
		       }
		       else 
		       {
		    	  
		    	   eclate(fils3);
		    	   AjouterElement(Elem, fils3);
		       }
		       break;
		    }
		    case(4):
		    {
		       if(Elem<A.racine[0])
		       {
		    	   
		    	   eclate(fils1);
		    	   AjouterElement(Elem, fils1);
		       }
		       else if(A.racine[0]<Elem  && Elem<A.racine[1])
		       {
		    	  
		    	   eclate(fils2);
		    	   AjouterElement(Elem, fils2);
		       }
		       else if(A.racine[1]<Elem  && Elem<A.racine[2])
		       {
		    	   
		    	   eclate(fils3);
		    	   AjouterElement(Elem, fils3);
		       }
		       else
		       {
		    	   
		    	   eclate(fils4);
		    	   AjouterElement(Elem, fils4);
		       }
		       break;
		    }
			
		  }
			
		 }
		}
				





il me reste la fonction éclater je ne sais pas comment je peux le faire.Merci en avance pour vos aides
A voir également:

1 réponse

en faite j'ai fais la fonction éclater comme ca
private void eclate(Abre2_3_4 A) {
		// TODO Auto-generated method stub
		
			Noeud n=new Noeud();	
			int[] E1=new int[1];
			int[] E2=new int[1];
			
			if(A.racine.length==3)
			{
		    n.racine[0]=A.racine[1];
			E1[0]=A.racine[1];
			E2[0]=A.racine[2];
		    nouvelArbre1(n.racine,nouvelArbre1(E1,A.fils1,A.fils2),nouvelArbre1(E2,A.fils3,A.fils4));
			}
		
	}
est ce que c'est juste ou non en plus comment je peux le liée le noeud crée avec la racine ???
0
il n' y a pas une aide ou explication slvp? Je suis bloqué là et je ne sais comment je peux programmer
0
pour quoi vous me répondez pas???
0