Java - Asesoria Arbol n-ario

 
Vista:

Asesoria Arbol n-ario

Publicado por Guillermo (2 intervenciones) el 27/03/2019 00:22:29
hola tengo este codigo para generar un arbol n-ario, quisiera su ayuda para poder resolverlo
la clase nodo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class Nodo {
    Object valor; //para almacenar cualquier valor
    Nodo hermano;//variable nodo padre
    Nodo hijo;//variable nodo padre
    int numHijos;
 
    //Creando los constructores
    public Nodo(Object valor)
    {
        this.valor = valor;
        this.hermano = this.hijo = null;
 
    }
    public Nodo(Nodo hermano,Nodo hijo,Object valor)
    {
        this(valor);//invoca la variable valor del constructor anterior
        this.hermano = hermano;
        this.hijo = hijo;
    }
 
    /*
    Creando los metodos get a set para valor,padre e hijo
    */
    public Object getValor() {
        return valor;
    }
 
    public void setValor(Object valor) {
        this.valor = valor;
    }
 
    public Nodo getHermano() {
        return hermano;
    }
 
    public void setPadre(Nodo padre) {
        this.hermano = padre;
    }
 
    public Nodo getHijo() {
        return hijo;
    }
 
    public void setHijo(Nodo hijo) {
        this.hijo = hijo;
    }
 
    /* */
    public void nuevoHijo(Nodo nhj)
    {
        this.hijo = nhj;
        numHijos++;
    }
}

la clase arbol general
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class ArbolGeneral {
    Nodo raiz;
 
    public ArbolGeneral()
    {
        raiz = null;
    }
 
    //Verifica si se tiene raiz
    public boolean vacia()
    {
        return (raiz == null) ? true : false;
    }
 
   public Nodo insertarRaiz(Object valor)
   {
       if (vacia())
       {
           raiz = new Nodo(valor);
       }
       return raiz;
   }
 
   public void insertarNodo(Nodo nodo,Object valor,String padre)
   {
       Nodo nuevo = new Nodo(valor);
       if(nodo.getValor().equals(padre))//aqui ve si el padre es la raiz
       {
           nodo.nuevoHijo(nuevo); //e inserta nuevo nodo, solo me agrega el primer valor
       }else {
        /*
           Como podria decirle que agregue un nuedo nodo despues de haber agreado el nodo a la raiz, para
           segun lo ingresado me lo ponga como hijo o hermano
        */
       }
   }
 
    public String getRaiz() {
        return raiz.valor.toString();
    }
}

y mi clase principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PruebaArbolGeneral {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ArbolGeneral arbol = new ArbolGeneral();
        Nodo nodo = arbol.insertarRaiz("0");
        System.out.println(arbol.getRaiz());
        arbol.insertarNodo(nodo, 1, "0");
        arbol.insertarNodo(nodo,2,"1");
        arbol.insertarNodo(nodo,1.1,"0");
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de CalgaryCorpus
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Asesoria Arbol n-ario

Publicado por CalgaryCorpus (623 intervenciones) el 28/03/2019 10:27:45
Tu nodo deberia tener una lista de nodos dentro, y con ello pasaria a ser el padre de esos nodos.
Los nodos posiblemente podrian tener una referencia al padre, por si quieren visitar a los hermanos.

Como lo tienes, los nodos, cada vez que agregan un hijo, sobreescriben lo que tenian antes.
Mejor que agreguen a la lista interior, y que el nodo agregado indique la referencia del padre, si es que fuera necesario.

No es claro como haces para tener mas de 2 niveles en el arbol, o estas pensado que todo nodo va a ser hijo del nodo raiz?
Por el contrario, como vas a especificar que quieres que un cierto nodo sea hijo de otro y no hijo de la raiz?
En los arboles binarios es facil, porque solo hay 2 posibilidades, pero aqui tus arboles son n-arios, no es claro cuando se genera un nieto, en vez de un hijo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Asesoria Arbol n-ario

Publicado por Guillermo (2 intervenciones) el 28/03/2019 15:27:28
Ok, entoces faltaría agregar una variable en el nodo el cual sea la referencia de quien es su padre, y es para un árbol general o n-ario donde cada padre puede tener la cantidad de hijos que sea, y mi idea es que cuando termine el nodo raíz contenga todos los nodos según su acomodo de padre hijos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar