//Obtener nivel de los nodos public int getNivel(Nodos nodo) { for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodoAux = (Nodos)nodosOrdenados[i]; if (nodo.getNivel() != nodoAux.getNivel() && nodo.getNombre().Equals(nodoAux.getNombre()) && !validarHijos(nodoAux) && !noRaiz(nodo)) { return(nodoAux.getNivel()); } } return(0); }
//Validar si es raiz public Boolean noRaiz(Nodos nodo) { for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodoAux = (Nodos)nodosOrdenados[i]; if (nodo.getNombre().Equals(nodoAux.getNombre()) && nodo.getNivel().Equals(nodoAux.getNivel())) { return(true); } } return(false); }
//Generar arbol public void generarArbol() { //Crear carpeta string path = @"..\Arboles Sintacticos"; string contenido2 = ""; if (!Directory.Exists(path)) { DirectoryInfo di = Directory.CreateDirectory(path); } filtrarArbol(); for (int i = 0; i < nodosOrdenados.Count; i++) { Nodos nodo = (Nodos)nodosOrdenados[i]; contenido2 += "\"" + nodo.getPadre().getNombre() + " " + nodo.getPadre().getNivel() + "\"" + "->" + "\"" + nodo.getNombre() + " " + nodo.getNivel() + "\"" + ";\n"; } String inicio = "digraph G {"; string contenido1 = "{" + "node [margin=0 fontsize=12 shape=circle]\n"; String final = " }"; string graphVizString = inicio + contenido1 + contenido2 + final + final; Console.WriteLine(contenido2); Bitmap bm = new Bitmap(Graphviz.RenderImage(graphVizString, "jpg")); var imagen = new Bitmap(bm); bm.Dispose(); Image image = (Image)imagen; imagen.Save(path + @"\prueba.jpg", ImageFormat.Jpeg); imagen.Dispose(); IDE.ImagenArbol foto = new IDE.ImagenArbol(); foto.Show(); }