Sie sind auf Seite 1von 16

Árbol Binario

Árbol binario

Árbol binario

Un árbol y 11 nodos
Árbol binario

Estructura de un árbol binario

10

8 20

3 9 16 30

1 5 14 17
Árbol binario

Orden de inserción 10,8,20,16,3,1,14,17,30,5,9

• El primer nodo insertado será


la raíz.
• Si el siguiente nodo insertado
es mayor que la raíz se va a la
derecha(de forma recursiva).
• Si es menor a la raíz se inserta
a la izquierda(de forma
recursiva).

Árbol generado
Árbol binario

Código del algoritmo para realizar la inserción de un nodo

// Inserta un nodo evaluando previamente el valor de la raiz


Nodo *InsertarNodo(Nodo *nodo, Nodo *raiz)
{
// cuando inicialmente no se tiene una raiz,el nuevo nodo pasa a ser raiz
if (raiz == NULL)
raiz = nodo;
else
// si el nuevo nodo es mayor a la raiz
// insertar a la derecha
if (raiz->Dato < nodo->Dato)
raiz->SubNodoDerecho=InsertarNodo(nodo,raiz->SubNodoDerecho);
// si el nuevo nodo es menor a la raiz
// insertar a la izquierda
else if (nodo->Dato < raiz->Dato)
raiz->SubNodoIzquierdo=InsertarNodo(nodo,raiz->SubNodoIzquierdo);
return raiz;
}
Árbol binario

Recorrido de un árbol binario en amplitud

• Se recorre por niveles.

Datos mostrados al recorrer


10, 8,20, 3,9,16,30, 1,5,14,17
Árbol binario

void RecorridoEnAmplitud(Nodo *raiz) const {


queue<Nodo*> cola;
Nodo *temp = NULL;
if (raiz != NULL) {
cola.push(raiz);
while (!(cola.empty())) {
temp = cola.front();
cola.pop();
cout << temp->Dato << " ";
if (temp->SubNodoIzquierdo != NULL)
cola.push(temp->SubNodoIzquierdo);
if (temp->SubNodoDerecho != NULL)
cola.push(temp->SubNodoDerecho);
}
}
}
Árbol binario

Recorrido de un árbol binario en profundidad

• En el recorrido en profundidad se puede ver 3 tipos.


• PreOrden
• EnOrden
• PostOrden
Árbol binario

Recorrido PreOrden

• Raíz
• Izquierdo
• Derecho

Datos mostrados al recorrer


10,8,3,1,5,9,20,16,14,17,30
Árbol binario

Código preorden

void PreOrden(Nodo *raiz) const


{
if (raiz != NULL)
{
cout << " " << raiz->Dato;
this->PreOrden(raiz->SubNodoIzquierdo);
this->PreOrden(raiz->SubNodoDerecho);
}
}
Árbol binario

Recorrido PostOrden

• Izquierdo
• Derecho
• Raíz

Datos mostrados al recorrer


1,5,3,9,8,14,17,16,30,20,10
Árbol binario

Código postorden

void PostOrden(Nodo *raiz) const


{
if (raiz != NULL)
{
this->PostOrden(raiz->SubNodoIzquierdo);
this->PostOrden(raiz->SubNodoDerecho);
cout << " " << raiz->Dato;
}
}
Árbol binario

Recorrido InOrden

• Izquierdo
• Raíz
• Derecho

Datos mostrados al recorrer


1,3,5,8,9,10,14,16,17,20,30
Árbol binario

Código inorden

void InOrden(Nodo *raiz) const


{
if (raiz != NULL)
{
this->InOrden(raiz->SubNodoIzquierdo);
cout << " " << raiz->Dato;
this->InOrden(raiz->SubNodoDerecho);
}
}
Fin
Árbol binario

Das könnte Ihnen auch gefallen