Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles PDF
Arboles PDF
ESTRUCTURAS DE DATOS
2006
DEFINICION
Figura 1 :Árboles
Definición 1:
Definición 2:
Altura del árbol se define como el nivel más alto del árbol. En la
figura 4 la altura del árbol es 2.
(a) (b)
Se define como un árbol en el que todos sus nodos, excepto los del
último nivel, tienen dos hijos; el subárbol izquierdo y el subárbol
derecho.
Los pasos que se deben aplicar para lograr la conversión del árbol
general a binario son los siguientes:
Donde:
IZQ: campo donde se almacena la dirección del subárbol izquierdo del
nodo T.
INFO: campo donde se almacena la información de interés del nodo.
DER: campo donde se almacena la dirección del subárbol derecho del nodo
T.
Enlace = ˆ nodo
Nodo = registro
IZQ: tipo enlace
INFO: tipo dato
DER: tipo enlace
{Fin de la definición}
(b)
2n-1= 24-1=16-1=15
(a)
Sol: (A*(X+Y)) *C
Recorrido en Preorden
Recorrido en Inorden
Recorrido en Posorden
RECORRIDO EN PREORDEN
Algoritmo:
Preorden (nodo)
Si nodo ≠ Nil entonces { Visitar el nodo (escribir nodo→Info)
Regresar a Preorden con (nodo→Izq)
Regresar a Preorden con (nodo→der) }
Fin.
RECORRIDO EN INORDEN
Algoritmo:
Inorden (nodo)
Si nodo ≠ Nil entonces { Regresar a Inorden (nodo→Izq)
Visitar el nodo (escribir nodo→Info)
Regresar a Inorden con (nodo→der) }
Fin.
RECORRIDO EN POSORDEN
Algoritmo:
Posorden (nodo)
Si nodo ≠ Nil entonces { Regresar a Posorden (nodo→Izq)
Regresar a Posorden con (nodo→der)
Visitar el nodo (escribir nodo→Info) }
Fin.
DEFINICIÓN
#define NULL 0
struct nodo
{
struct nodo *izq;
tipo info;
struct nodo *der;
};
(*raiz)=NULL;
if (!ArbolBLleno())
if (!ArbolBLleno())
{ nuevo = CrearArbolB(valor);
nuevo->izq=B1;
nuevo->der=B2;
return nuevo;
}
else
cout << "Árbol Overflow ";
}
if (p!=NULL)
if (!ArbolBLleno())
{ nuevo = CrearArbolB(valor);
p->izq = nuevo;
return true;
}
else
{ cout << "Nodo P No Existe ";
return false;
}
else
{ cout << "Árbol Overflow ";
return false;
}
}
Ing. M.Sc. Fulbia Torres
Asignatura: Estructuras de Datos
Barquisimeto 2006
IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO
UTILIZANDO STRUCT
if (p!=NULL)
if ((!ArbolBLleno()))
{ nuevo = CrearArbolB(valor);
p->der = nuevo;
return true;
}
else
{ cout << "Nodo P No Existe ";
return false;
}
else
{ cout << "Árbol Overflow ";
return false;
}
}
Ing. M.Sc. Fulbia Torres
Asignatura: Estructuras de Datos
Barquisimeto 2006
IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO
UTILIZANDO STRUCT
Dado un Árbol, elimina el nodo cuya dirección se envía como
parámetro en Ptr.
void ElimNodo(struct nodo *ptr)
{
struct nodo *ant;
struct nodo *temp;
temp = ptr;
if (ptr->der==NULL)
ptr=ptr->izq;
else if (ptr->izq==NULL)
ptr=ptr->der;
else
{
temp=ptr->izq;
ant=ptr;
while(temp->der!=NULL)
{ ant = temp;
temp = temp->der;
}
ptr->info = temp->info;
if (ant==ptr)
ant->izq = temp->izq;
else ant->der = temp->izq;
}
Ing. M.Sc. Fulbia Torres
delete temp;
Asignatura: Estructuras de Datos
}
Barquisimeto 2006
IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL BINARIO
UTILIZANDO STRUCT
bool ArbolBVacio(void)
{
return (raiz==NULL);
}
bool ArbolBLleno(void)
{
struct nodo *p;
p = new nodo;
if (p!=NULL)
{
delete p;
return false;
}
else return true;
}
else if (elem==((*raiz)->info))
return 1;
Cada nuevo elemento se inserta como una hoja del árbol. Los restantes
elementos se pueden situar fácilmente.
Eliminación clave: 99
DEFINICIÓN
#define NULL 0
struct nodo
{
struct nodo *izq;
tipo info;
struct nodo *der;
};
(*raiz)=NULL;
if (valor<((*raiz)->info)) InsercionValorArbol(&((*raiz)->izq),valor);
else
{ struct nodo *n;
n=new nodo;
n->izq=NULL;
n->der=NULL;
n->info=valor;
(*raiz)=n;
}
}
if ((*raiz)!=NULL)
{
if (valor<((*raiz)->info)) EliminacionValorArbol(&((*raiz)->izq),valor);
else { Otro=*raiz;
if ((Otro->der)==NULL) (*raiz)=Otro->izq;
else { Aux=(Otro->izq);
Aux1=Aux;
while ((Aux->der)!=NULL)
{ Aux1=Aux;
Aux=(Aux->der);
}
(Otro->info)=(Aux->info);
Otro=Aux;
(Aux1->der)=(Aux->izq);
}
delete(Otro); Ing. M.Sc. Fulbia Torres
}
else cout << "El nodo no se encuentra en el arbol\n";
Asignatura: Estructuras de Datos
} Barquisimeto 2006
IMPLEMENTACIÓN DINÁMICA DEL ÁRBOL
BINARIO DE BÚSQUEDA UTILIZANDO STRUCT
Recorridos en el árbol binario
if (valor<((*raiz)->info)) BusquedaValorArbol(&((*raiz)->izq),valor);
else
if (valor>((*raiz)->info)) BusquedaValorArbol(&((*raiz)->der),valor);
else
cout << "El nodo no se encuentra en el arbol\n";
HASTA LA PRÓXIMA
CLASE