Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles PDF
Arboles PDF
ESTRUCTURAS DE DATOS
2006
DEFINICION
Figura 1 :rboles
Definicin 1:
Definicin 2:
(a) (b)
Se define como un rbol en el que todos sus nodos, excepto los del
ltimo nivel, tienen dos hijos; el subrbol izquierdo y el subrbol
derecho.
Los pasos que se deben aplicar para lograr la conversin del rbol
general a binario son los siguientes:
Donde:
IZQ: campo donde se almacena la direccin del subrbol izquierdo del
nodo T.
INFO: campo donde se almacena la informacin de inters del nodo.
DER: campo donde se almacena la direccin del subrbol derecho del nodo
T.
Enlace = nodo
Nodo = registro
IZQ: tipo enlace
INFO: tipo dato
DER: tipo enlace
{Fin de la definicin}
(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 nodoInfo)
Regresar a Preorden con (nodoIzq)
Regresar a Preorden con (nododer) }
Fin.
RECORRIDO EN INORDEN
Algoritmo:
Inorden (nodo)
Si nodo Nil entonces { Regresar a Inorden (nodoIzq)
Visitar el nodo (escribir nodoInfo)
Regresar a Inorden con (nododer) }
Fin.
RECORRIDO EN POSORDEN
Algoritmo:
Posorden (nodo)
Si nodo Nil entonces { Regresar a Posorden (nodoIzq)
Regresar a Posorden con (nododer)
Visitar el nodo (escribir nodoInfo) }
Fin.
DEFINICIN
#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
IMPLEMENTACIN DINMICA 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
IMPLEMENTACIN DINMICA DEL RBOL BINARIO
UTILIZANDO STRUCT
Dado un rbol, elimina el nodo cuya direccin se enva como
parmetro 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
IMPLEMENTACIN DINMICA 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 fcilmente.
Eliminacin clave: 99
DEFINICIN
#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
IMPLEMENTACIN DINMICA DEL RBOL
BINARIO DE BSQUEDA 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 PRXIMA
CLASE