Buenas,
Estás mezclando programación estructurada con programación orientada a objetos.
Cita: 1)hijos.add(nodo); no le faltaría indicar donde lo estás metiendo, a que hijo se lo asigna? en que nivel?
No tengo que indicárselo. Estoy añadiendo un hijo al propio nodo.
Cita: 2)nodo.padre=this; a "this" le faltaría algo no?, estás igualando el padre al nodo?
Cuando a un nodo le añado un hijo, este nodo es padre de dicho hijo.
Te pongo la clase nodo tal y como la veo yo:
Código Java:
Ver originalpublic class nodoN {
private int valor;
private nodoN padre;
public void nodoN(){
nodoN(0);
}
public void nodoN(int v){
valor = v;
}
public boolean isRaiz (){
return this.padre == null;
}
public void agregarHijo(nodoN nodo) {
hijos.add(nodo);
nodo.padre=this;
}
public List<NodoN> getHijos() {
return hijos;
}
public int getValue() {
return value;
}
}
Para utilizarlo y hacer una estructura como esta:
raiz
--Nodo1
----Nodo3
--Nodo2
---Nodo4
---Nodo5
-----Nodo6
Código Java:
Ver original//Definimos nodos
NodoN raiz = new nodoN(0);
NodoN nodo1 = new Nodo(1);
NodoN nodo2 = new Nodo(2);
NodoN nodo3 = new Nodo(3);
NodoN nodo4 = new Nodo(4);
NodoN nodo5 = new Nodo(5);
NodoN nodo6 = new Nodo(6);
//Creamos la estructura de arbol
raiz.agregarHijo(nodo1);
raiz.agregarHijo(nodo2);
nodo1.agregarHijo(nodo3);
nodo2.agregarHijo(nodo4);
nodo2.agregarHijo(nodo5);
nodo5.agregarHijo(nodo6);
Para recorrer la estructura lo perfecto sería que implementases el patrón iterator en la clase nodo (
http://www.tutorialspoint.com/design...or_pattern.htm).
Te pongo un ejemplo de recorrido recursivo del árbol pintando en consola:
Código Java:
Ver originalpublic void recorrerArbol(nodoN nodoRaiz) {
if (nodoRaiz.getHijos() == null) {
System.
out.
println("Value=" + nodoRaiz.
getValue(); }
for (final nNodoN nodo : nodoRaiz.getHijos()) {
recorrerArbol(nodo);
}
}
[....]
recorrerArbol(raiz);
Nota: lo he escrito directamente sobre el post, por lo que puede que me haya equivocado en alguna letra y/o símbolo en el código. Sin embargo espero que sirva al menos la idea.
Un saludo