En soit, ça n'a rien à voir avec java, ça dépend surtout de la manière dont tu implémentes ta classe d'arbre. A priori pour un arbre n-aire tu vas stocker une liste ou un vecteur de n fils. Il suffit donc d'éffectuer un appel récursif sur chaque nœuds fils pour visiter l'arbre.
En C++ voilà ce que ça donnerait :
#include <vector>
#incldue <iostream>
struct noeud_t{
int data;
std::vector<struct noeud_t *> fils;
};
struct arbre_t{
struct noeud_t *racine;
};
void afficher_noeud_rec(const struct noeud_t *n,unsigned profondeur){
for(unsigned i=0;i<profondeur;++i) std::cout << '\t'; // indenter le noeud
std::cout << n->data << std::endl; // écrire la donnée stockée
for(unsigned i=0;i<n.fils.size();++i){
afficher_noeud_rec(n.fils[i],profondeur+1); // écrire les noeuds fils
}
}
void afficher_arbre(const struct arbre_t & a){
afficher_noeud_rec(a.racine,0);
}
Petite subtilité : en java tout est passé par référence, donc pour que l'indentation fonctionne correctement il faudra faire une variable profondeur intermédiaire.
Bonne chance