예제 #1
0
 private IEnumerable <Tipo> MPRecorrerPostOrden(ClaseNodo <Tipo> nodoActual)
 {
     if (nodoActual != null)
     {
         foreach (Tipo t in MPRecorrerPostOrden(nodoActual.HijoIzq))
         {
             yield return(t);
         }
         foreach (Tipo t in MPRecorrerPostOrden(nodoActual.HijoDer))
         {
             yield return(t);
         }
         yield return(nodoActual.ObjetoConDatos);
     }
 }
예제 #2
0
        //INSERTAR
        public void InsertarNodo(Tipo Objeto)
        {
            ClaseNodo <Tipo> hoja = new ClaseNodo <Tipo>(Objeto);

            if (Vacia)
            {
                Raiz = hoja;
            }
            else
            {
                ClaseNodo <Tipo> current     = Raiz;
                bool             noInsertado = true;
                while (noInsertado)
                {
                    if (Objeto.CompareTo(current.ObjetoConDatos) == -1)
                    {
                        if (current.HijoIzq == null)
                        {
                            current.HijoIzq = hoja;
                            noInsertado     = false;
                        }
                        else
                        {
                            current = current.HijoIzq;
                        }
                    }
                    else if (Objeto.CompareTo(current.ObjetoConDatos) == 1)
                    {
                        if (current.HijoDer == null)
                        {
                            current.HijoDer = hoja;
                            noInsertado     = false;
                        }
                        else
                        {
                            current = current.HijoDer;
                        }
                    }
                    else
                    {
                        throw new Exception("No es posible registrar, el dato ya existe");
                    }
                }
            }
        }
예제 #3
0
 private void RecorrerNodos(ClaseNodo <Rosticeria> NodoActual, ref string Resultado)
 {
     if (NodoActual != null)
     {
         if (NodoActual.HijoIzq != null)
         {
             Resultado = Resultado + "\n" + NodoActual.ObjetoConDatos.ToString() + "->" +
                         NodoActual.HijoIzq.ObjetoConDatos.ToString() + ";";
         }
         if (NodoActual.HijoDer != null)
         {
             Resultado = Resultado + "\n" + NodoActual.ObjetoConDatos.ToString() + "->" +
                         NodoActual.HijoDer.ObjetoConDatos.ToString() + ";";
         }
         RecorrerNodos(NodoActual.HijoIzq, ref Resultado);      // Llamada recursiva para recorrer el subárbol izquierdo
         RecorrerNodos(NodoActual.HijoDer, ref Resultado);      // Llamada recursiva para recorrer el subárbol derecho
     }
 }
예제 #4
0
        //ELIMINAR
        //  public Tipo EliminarNodo(Tipo objeto) {}

        //BUSCAR
        //public Tipo BuscarNodo(Tipo objeto) { }

        //VACIAR
        public void Vaciar()
        {
            Raiz = null;
        }
예제 #5
0
 public ClaseABB()
 {
     Raiz = null;
 }