ArbolBinario PDF
ArbolBinario PDF
ArbolBinario PDF
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Un árbol binario es una estructura recursiva,
existe un nodo denominado raíz. Cada nodo es la
raíz de su propio subárbol y tiene 0, 1 o 2 hijos,
que son raíces de árboles llamados subárboles
derecho e izquierdo del nodo respectivamente.
Un árbol binario se divide en tres subconjuntos
disjuntos:
• {R} Nodo raíz
• {I1, I2, … In} Subárbol izquierdo de R
• {D1, D2, … Dn} Subárbol derecho de R
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Imagen de un árbol binario
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• En cualquier nivel n, un árbol binario puede contener de 1 a
2n nodos. El número de nodos por nivel contribuye a la
densidad del árbol.
• En la siguiente figura, el árbol de raíz A contiene 8 nodos en
una profundidad de 4, mientras que el árbol (B) contiene 5
nodos y una profundidad 5. Este último caso es una forma
especial, denominada árbol degenerado, en el que existe un
solo nodo hoja y cada nodo no hoja sólo tiene un hijo. Un
árbol degenerado es equivalente a una lista enlazada.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• La distancia de un nodo a la raíz determina la eficiencia con la
que ser localizado. Por ejemplo, dado cualquier nodo de un
nodo árbol, a sus hijos se puede acceder siguiendo sólo un
camino de bifurcación o de ramas, el que conduce al nodo
deseado. De modo similar, los nodos a nivel 2 de un árbol sólo
pueden ser accedidos siguiendo un camino de sólo dos ramas
del árbol.
• La característica anterior nos conduce a una característica muy
importante de un árbol binario, su balance o equilibrio. Para
determinar si un árbol está equilibrado, se calcula su factor de
equilibrio. El factor de equilibrio de un árbol binario es la
diferencia en altura entre los subárboles derecho e izquierdo. Si
sE define la altura del subárbol izquierdo como HI y la altura del
subárbol derecho como HD, entonces el factor de equilibrio del
árbol B, se determina por la siguiente fórmula: B = HD -HI
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Utilizando esta fórmula el equilibrio del nodo raíz los dos
árboles de la figura anterior, (A) -1 y (B) 4.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• El último caso de árbol es un tipo especial denominado árbol
degenerado en el que hay un solo nodo hoja (E) y cada nodo
no hoja sólo tiene un hijo. Un árbol degenerado es
equivalente a una lista enlazada.
• 1 + 2 + 4 + . . . + 2k-1 = 2k -1
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Existen otros conceptos que definen las características del
árbol, en relación a su tamaño:
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Nivel: se define para cada elemento del árbol como la
distancia a la raíz, medida en nodos. El nivel de la raíz es cero
y el de sus hijos uno. Así sucesivamente.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Estructura de un Árbol Binario
• La estructura de un árbol binario se construye
con nodos. Cada nodo debe contener el
campo dato (datos a almacenar) y dos campos
apuntador, uno al subárbol izquierdo y otro al
subárbol derecho, que se conocen como
puntero izquierdo (izquierdo, izdo.) y
apuntador derecho (derecho, dcho.)
respectivamente. Un valor NULL indica un
árbol vacío.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• El algoritmo correspondiente a la estructura de un árbol es el
siguiente:
Nodo
subarbolIzquierdo <apuntador a Nodo>
datos <Tipodato>
subarbolDerecho <apuntador a Nodo>
Fin Nodo
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• La figura muestra un árbol binario y su estructura en
nodos:
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Operaciones en Árboles Binarios
Una vez que se tiene creado un árbol binario, se pueden
realizar diversas operaciones sobre el. El hacer uso de una
operación u otra dependerá de la aplicación que se le quiera
dar al árbol. Algunas de las operaciones típicas que se realizan
en árboles binarios son las siguientes:
• Determinar su altura.
• Determinar su número de elementos.
• Determinar el número de nodos hoja.
• Hacer una copia.
• Visualizar el árbol binario en pantalla o en impresora.
• Determinar si dos árboles binarios son idénticos.
• Borrar (eliminar el árbol).
• Si es un árbol de expresión", evaluar la expresión.
• Si es un árbol de expresión, obtener la forma de paréntesis de la expresión.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Todas estas operaciones se pueden realizar recorriendo el
árbol binario de un modo sistemático. El recorrido de un árbol
es la operación de vista al árbol, o lo que es lo mismo, la visita
a cada nodo del árbol una vez y sólo una. El recorrido de un
árbol es necesario en muchas ocasiones, por ejemplo si se
desea imprimir la información contenida en cada nodo.
Existen diferentes formas de visitar o recorrer un árbol.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Árboles de Expresión
• Es una secuencia de tokens (componentes de léxicos
que siguen unas reglas establecidas). Un token puede
ser o bien un operando o bien un operador.
• La figura representa la expresión infija a * (b + c ) + d
junto a su árbol de expresión. El nombre de infija es
debido a que los operadores se sitúan entre los
operandos. En una primera observación vemos que
los paréntesis de la expresión no aparecen en el árbol
y esto resulta muy interesante para la evaluación de la
expresión.
• Un árbol de expresión es un árbol binario con las
siguientes propiedades:
• Cada hoja es un operando.
• Los nodos raíz y nodos internos son operadores.
• Los subárboles son subexpresiones en las que el nodo
raíz es un operador.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Los árboles binarios se utilizan para representar
expresiones en memoria; esencialmente, en
compiladores de lenguajes de programación. Se
muestra el árbol binario de expresión de (a + b) *
c.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
• Obsérvese que los paréntesis no se almacenan en el árbol pero están
implicados en la forma del árbol. Si se supone que todos los operadores
tienen dos operandos, se puede representar una expresión con un árbol
binario cuya raíz contiene un operador y cuyos subárboles izquierdo y
derecho son los operando s izquierdo y derecho respectivamente. Cada
operando puede ser una letra (x, y, a, b, etc.) o una sub expresión
representada como un subárbol. En la figura se puede ver cómo el operador
que está en la raíz es *, su subárbol izquierdo representa la sub expresión (x
+ y) y su subárbol derecho representa la sub expresión (a - b). El nodo raíz
del subárbol izquierdo contiene el operador (+) de la sub expresión
izquierda y el nodo raíz del subárbol derecho contiene el operador (-) de la
sub expresión derecha. Todos los operando s letras se almacenan en nodos
hojas.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Recorrido de un árbol
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Recorrido en Preorden
• El recorrido preorden2 (NID) conlleva los siguientes pasos, en los que el raíz va
antes que los subárboles:
– Recorrer el raíz (N)
– Recorrer el subárbol izquierdo (I) en preorden.
– Recorrer el subárbol derecho (D) en preorden.
• Regla( En el recorrido preorder el raíz se procesa antes que-los subárboles
izquierdo y derecho.)
• Dado las características recursivas de los árboles y la definición recursiva del
recorrido, el algoritmo tiene naturaleza recursiva. Primero, se procesa la raíz, a
continuación el subárbol izquierdo y a continuación el subárbol derecho. Para
procesar el subárbol izquierdo, se hace una llamada recursiva al recorrido
preorden y luego se hace lo mismo con el subárbol derecho.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Recorrido en Inorder (orden)
• En el árbol de la figura siguiente, los nodos se han numerado en el orden en que son
visitados durante el recorrido enorden. El primer subárbol recorrido es el subárbol
izquierdo del nodo raíz (árbol cuyo nodo contiene la letra El). Este subárbol consta de los
nodos B,D y E, es a su vez otro árbol con el nodo B como raíz, por lo que siguiendo el
orden IND, se visita primero D, a continuación B (nodo raíz) y por último E (derecha).
Después de la visita a este subárbol izquierdo se visita el nodo raíz A y por último se visita
el subárbol derecho que consta de los nodos C,F y G.A continuación, siguiendo el orden
IND para el subárbol derecho, se visita primero F, después C (nodo raíz) y por último G.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Entonces el orden del recorrido inorden del árbol de la
figura, es D-B-E-A-F-C-G.
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.
Recorrido en Postorden
• El recorrido postorden (IDN) procesa el nodo raíz (post) después de que los
subárboles izquierdo y derecho se han procesado. Se comienza situándose en la
hoja más a la izquierda y se procesa. A continuación se procesa su subárbol
derecho. Por último se procesa el nodo raíz. Las etapas del algoritmo son:
Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento
fue tomada textualmente de varios libros por lo que está prohibida su impresión y distribución.