1. Materia: Algoritmos y Estructura de Datos
Maestra: Adriana Hernández
Alumnos:
Ignacio Noriega
Manuel Bernal
Julio Catalán
Carlos López
2. Un árbol binario es una estructura de datos de tipo árbol
en donde cada uno de los nodos del árbol puede tener
0, 1, ó 2 subárboles llamados de acuerdo a su caso como:
• Si el nodo raíz tiene 0 relaciones se llama hoja.
• Si el nodo raíz tiene 1 relación a la izquierda, el segundo
elemento de la relación es el subárbol izquierdo.
• Si el nodo raíz tiene 1 relación a la derecha, el segundo
elemento de la relación es el subárbol derecho.
3.
4. • Búsqueda
• Insertar
• Recorrer (De la cual posteriormente se hablara)
• Eliminación o Supresión
5.
6.
7.
8.
9. Supongamos que tenemos un árbol A y lo queremos convertir a un árbol binario B.
1.- Convertir a A como la Raíz de nuestro nuevo Árbol Binario, luego enlazo el nodo
raíz con el camino que conecta al nodo mas a la izquierda.
2.- Enlazar ese nodo con los restantes descendientes del nodo raíz en su camino con lo
que se forma el nivel uno.
3.- Repetir los dos pasos anteriores con los nodos del nivel dos enlazando siempre en
un mismo camino todos los hermanos (descendientes del mismo nodo).
4.- Repetir los pasos hasta llegar al nivel mas alto.
5.- Girar el árbol resultante 45° para diferenciar al izquierdo del derecho
10.
11. El recorrido de árboles refiere al proceso de visitar de una
manera sistemática, exactamente una vez, cada nodo en una
estructura de datos de árbol.
Tales recorridos están clasificados por el orden en el cual son
visitados los nodos. Los siguientes algoritmos son descritos para un
árbol binario, pero también pueden ser generalizados a otros árboles.
12. (raíz, izquierdo, derecho) Para recorrer un árbol no vacío en pre
orden, hay que realizar las siguientes operaciones recursivamente en
cada nodo, comenzando con el nodo de raíz:
1.- Visite la raíz
2.- Atraviese el sub-árbol izquierdo
3.- Atreviese el sub árbol derecho
13. (izquierdo, raíz, derecho). Para recorrer un árbol binario no vacío
en in orden (simétrico), hay que realizar las siguientes operaciones
recursivamente en cada nodo:
1.- Atraviese el sub árbol izquierdo
2.- Visite la raíz
3.- Atraviese el sub árbol derecho
14. (izquierdo, derecho, raíz). Para recorrer un árbol binario no vacío
en post orden, hay que realizar las siguientes operaciones
recursivamente en cada nodo:
1.- Atraviese el sub árbol izquierdo
2.- Atraviese el sub árbol derecho
3.- Visite la raíz
15. En general, la diferencia entre pre orden, in orden y post orden es cuándo se
recorre la raíz. En los tres, se recorre primero el sub-árbol izquierdo y luego el
derecho
En pre orden, la raíz se recorre antes que los recorridos de los subárboles
izquierdo y derecho
En in orden, la raíz se recorre entre los recorridos de los árboles izquierdo y
derecho
En post orden, la raíz se recorre después de los recorridos por el subárbol
izquierdo y el derecho
16. Preorden (nodo)
si nodo = nulo entonces retorna
imprime nodo.valor
preorden(nodo.izquierda)
preorden(nodo.derecha)
Inorden (nodo)
si nodo = nulo entonces retorna
inorden(nodo.izquierda)
imprime nodo.valor
inorden(nodo.derecha)
Postorden(nodo)
si nodo = nulo entonces retorna
postorden(nodo.izquierda)
postorden(nodo.derecha)
imprime nodo.valor
17. RECORRIDO IN ORDEN
Es particularmente común usar un recorrido in orden en un árbol binario de búsqueda
porque éste retornará valores en el orden del conjunto subyacente, de acuerdo al
comparador que configura el árbol de búsqueda binaria (de aquí el nombre).
Para ver porqué éste es el caso, note que si n es un nodo en un árbol binario de
búsqueda, entonces todo n en el subárbol izquierdo es menor que n, y todo n en el
subárbol derecho es mayor o igual a n.
Por lo tanto, si visitamos el subárbol izquierdo en orden, usando una llamada recursiva, y
entonces visitamos a n, y después visitamos el subárbol derecho en orden, nosotros hemos
visitado completamente el subárbol con raíz en n en orden.
18. RECORRIDO PRE ORDEN
Recorriendo un árbol en pre orden mientras se está insertando los valores en un
nuevo árbol es una manera común de hacer una copia completa de un árbol
binario de búsqueda.
También se pueden usar los recorridos pre orden para conseguir una expresión
prefijo (notación polaca) de árboles de expresión.
Recorra el árbol de expresión en pre orden. Para calcular el valor de tal expresión.
Cada vez que se encuentre un operador, se sustituyen los dos símbolos superiores
del stack por el resultado de aplicar al operador a esos elementos.