Problemas com recursividade gerando uma arvore

Crie uma função recursiva que retorne uma estrutura em árvore do seguinte objeto:

E quais são os problemas?

eu esqueci como organizar em arvore sem ser arvore binaria.
Eu lembro que tinha que calcular a profundidade… Procurei na internet mas n achei muitas respostas e agora estou aqui no guj.

Queria uma ajuda para fazer oq exercicio esta pedindo. Pode ser em visual basic, C ou JAVA

Dê uma olhada nos padrões Composite e Visitor.

cara ja olhei. acho q estou com problemas de interpretações de texto. Eu sei programa em java mas eu nao estou entendo como resolver esse problema. Se voce puder me ajudar… sem ficar dizendo o que estudar pq eu ja estou fazendo…

cara algo interessante em C seria voce utilizar o struct Nome{ /*Campos : Codigo\ Nome\ Nivel*/ }, assim voce pode retornar um estrutura de dados semelhante a uma arvore, porém os campos voce é quem define.

cara eu acho que é assim, tem o No(container) que tem uma lista para os Nós(folhas e ou galhos) e guarda seu objeto em si, no exemplo usei string, mas pode ser qualquer objeto, o importante é a estrutura :

[code]public class No {

String texto;

ArrayList<No> nos = new ArrayList<No>();

public No(String texto) {

	this.texto = texto;

}

public No addChild(No no) {

	nos.add(no);
	
	return no;

}

public ArrayList<No> getChilds() {

	return nos;

}

public void removeChild(int i) {

	nos.remove(i);

}

public No getChild(int i) {

	return nos.get(i);

}

public void imprimirFilhos(){
	
	for(No filho : this.getChilds()){
		
		System.out.println(filho.texto);
		filho.imprimirFilhos();
	}
	
}

}[/code]

[code]public static void main(String[] args) {
No arvore = new No(“Inicio”);

No A = arvore.addChild(new No("A"));

No filhoA = A.addChild(new No("filho de A"));
No segundofilhoA = A.addChild(new No("segundo filho de A"));

No filhofilhoA = filhoA.addChild(new No("filho do filho de A"));

arvore.imprimirFilhos();

}[/code]

ai você tem que ir adequando de acordo com sua necessidade.