Arboles Binarios
En esta entrada hablare sobre los arboles binarios su definición de hijo, padre, hoja y raíz y mostrare como insertar nodos en una lista dinámica para crear un árbol binario.
¿Qué es un árbol?
Es una estructura de datos no lineal, debido a que cada elemento apunta a 1 o varios elementos del mismo tipo. El elemento que apunta se le conoce como padre y al elemento apuntado como hija. Todos los elementos a excepción de la raíz tiene un padre.
¿Que es un árbol binario?
Es la estructura no lineal en la cual los elementos que contenga solo apunta de 1 a 2 elementos, conocidos como hijo izquierdo e hijo derecho.
Fuente:
http://aniei.org.mx/paginas/uam/CursoPoo/Recursos/Imagen22.gif
Recorridos de un árbol
Es la manera recursiva como pasaremos por cada nodo del árbol, existes tres formas:
- Enorden: Si visitamos primero hijo izquierdo, luego el padre y finalmente el hijo derecho
- Preorden: Primero el padre, luego el hijo izquierdo y finalmente el hijo derecho.
- Postorden: Primero hijo izquierdo, luego el hijo derecho y finalmente el padre
Hijo
Se le conoce como hijo a todos aquellos nodos que descienden de otro nodo ya sea de la raíz o no.
Padre
Se le conoce como padre al nodo de donde proviene el nodo hijo.
Raíz
Es el único no que no tiene padre, es el inicio del árbol.
Hoja
Se le conoce como hoja a todo aquel nodo que no tenga hijos.
Para dar inicio a un árbol debemos tener en cuenta la manera de insertar los nodos o los datos, para poder así crearlo.
A continuación les mostrare un pequeño código de como se inserta en un árbol, en otra entrada se detallara mas la parte de insertar y se verán otros métodos que se pueden utilizar en un árbol binario.
void insertar (int dato){
nodo *nuevoNodo= new nodo(dato);
if(raiz==NULL)
raiz=nuevoNodo;
else{
nodo *temp = raiz;
bool insertado=false;
if(BuscarArbol(dato)){
while(!insertado){
if(dato<temp->dato)
if(temp->izquierda==NULL){
temp->izquierda=nuevoNodo;
insertado=true;
}
else temp=temp->izquierda;
else if(dato>temp->dato)
if (temp->derecha==NULL){
temp->derecha=nuevoNodo;
insertado=true;
}
else temp=temp->derecha;
else insertado=true;
}
}
else
return;
}
}
La utilización de la estructura de datos árbol es muy utilizada. El árbol binario es común utilizarlo, ya que facilita en la búsqueda de los nodos cuando se tiene una gran cantidad de información en dicho árbol.
Se le conoce como hijo a todos aquellos nodos que descienden de otro nodo ya sea de la raíz o no.
Padre
Se le conoce como padre al nodo de donde proviene el nodo hijo.
Raíz
Es el único no que no tiene padre, es el inicio del árbol.
Hoja
Se le conoce como hoja a todo aquel nodo que no tenga hijos.
Para dar inicio a un árbol debemos tener en cuenta la manera de insertar los nodos o los datos, para poder así crearlo.
A continuación les mostrare un pequeño código de como se inserta en un árbol, en otra entrada se detallara mas la parte de insertar y se verán otros métodos que se pueden utilizar en un árbol binario.
void insertar (int dato){
nodo *nuevoNodo= new nodo(dato);
if(raiz==NULL)
raiz=nuevoNodo;
else{
nodo *temp = raiz;
bool insertado=false;
if(BuscarArbol(dato)){
while(!insertado){
if(dato<temp->dato)
if(temp->izquierda==NULL){
temp->izquierda=nuevoNodo;
insertado=true;
}
else temp=temp->izquierda;
else if(dato>temp->dato)
if (temp->derecha==NULL){
temp->derecha=nuevoNodo;
insertado=true;
}
else temp=temp->derecha;
else insertado=true;
}
}
else
return;
}
}
La utilización de la estructura de datos árbol es muy utilizada. El árbol binario es común utilizarlo, ya que facilita en la búsqueda de los nodos cuando se tiene una gran cantidad de información en dicho árbol.
Comentarios
Publicar un comentario