Árboles

Anuncio
Árboles
Estructura de Datos 1
Los árboles son estructuras dinámicas no lineales, hasta ahora solo se
han manejado estructuras estáticas y dinámicas lineales, es decir a cada
elemento de la estructura solo le sigue otro, en el caso de los árboles a estos les
puede seguir uno o mas elementos, es decir que un elemento de la estructura
puede apuntar a varios, además de esto son dinámicos ya que se pueden crear
elementos que conformen el árbol cuando se requiera y en cualquier parte del
programa.
Estructuras estáticas
Estructuras dinámicas
Arreglos
Listas
Pilas
Árboles
Colas
Estructuras lineales
Estructuras no lineales
Arreglos
Árboles
Pilas
Árboles
Colas
Listas
Árboles generales
Existen diferentes tipos de árboles cada uno de ellos con diferentes
características, pero en general un árbol se define de la siguiente manera:
Estructura jerárquica dinámica, homogénea y no lineal formada por un
conjunto de elementos conocidos como nodos, en los cuales el primer nodo que
se crea se conoce como nodo raíz y de este se derivan los demás.
Cuando no existe ningún nodo en el árbol se dice que se tiene un árbol
vacío.
Cada nodo que se deriva del nodo raíz o de otro nodo se puede manejar
cono un árbol, en base a esto dentro del árbol se manejan términos como
predecesor, descendiente , hijo, padre, ancestro, etc.
1
Árboles
Estructura de Datos 1
Representación de árboles.
Esta se puede dar de diferentes formas la mas utilizada es la
representación por medio de grafos.
Términos utilizados con árboles.
a) Todo árbol que no es vacío tiene un nodo raíz
b) Todo nodo x desciende directo de un nodo y se conoce como hijo de
y.
c) Todo nodo y de cual desciende un nodo x se conoce como padre de x.
d) El grado de un nodo se determina por el numero de descendientes
que este tenga.
e) El grado de un árbol se determina por el nodo de mayor grado.
f) Todo nodo que no tenga hijos se le conoce como nodo terminal de
hoja.
g) Todo nodo que no es raíz o terminal se le conoce como nodo interno.
h) El nivel de un nodo se determina por el numero de arcos que se
recorren para llegar a el. La raíz tiene nivel 1.
i)
La altura de un árbol se determina por el nodo de mayor nivel.
j)
Todos los nodos descendientes del mismo padre se conocen como
hermanos.
k) Peso es el numero de nodos del árbol sin contar la raíz
l)
Longitud del camino es el numero de arcos que deben ser recorridos
para llegar desde la raíz al nodo x. Por definición la raíz tiene longitud
de camino 1, y sus descendientes directos longitud de camino 2.
2
Árboles
Estructura de Datos 1
Árboles Binarios
Un árbol binario, es aquel que tiene como máximo 2 descendientes, es decir
cada uno de los nodos del árbol tiene un máximo de 2 hijos; además si es
binario de búsqueda se define de manera formal como: “Para todo nodo T del
árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo
de T serán menores o iguales al valor del nodo T. De forma similar, todos los
valores de los nodos del subárbol derecho de T deben ser mayores o iguales al
valor del nodo T ”.
Por lo mismo se pueden realizar las operaciones de búsqueda, inserción y
eliminación, de manera más eficiente en este tipo de árbol.
Por ejemplo si tenemos los siguientes valores para insertar en un árbol binario
de búsqueda:
34-10-56-82--46-25
El árbol quedaría con la siguiente estructura:
3
Árboles
Estructura de Datos 1
INSERCCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA:
1. Debe compararse la clave a insertar con la raíz del árbol. Si es mayor, debe
avanzarse hacia el subárbol derecho. Si es menor, debe avanzarse hacía el
subárbol izquierdo.
2. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes
condiciones:
1. El subárbol derecho es igual a vacío, o el subárbol izquierdo es igual a
vacío, en cuyo caso se procede a insertar el elemento en el lugar que le
corresponde.
2. La clave que quiere insertarse es igual a la raíz del árbol, en cuyo caso
no se realiza la inserción.
BÚSQUEDA
En el caso de la búsqueda es este tipo de árbol, por lógica, será moviéndose en el
árbol, dependiendo si el elemento a buscar es mayor o menor que la raíz, hasta que se
encuentre o se determine que no esta en el árbol.
Por ejemplo si del árbol formado anteriormente buscamos el valor 46
Compararíamos el 46 con el 34 que es la raíz, como 46 es mayor nos moveríamos al
subárbol derecho.
Ahora nuestra raíz es 56, comparamos 46 con 56 y vemos que es menor que este, por
lo que nos movemos hacía el subárbol izquierdo.
De esta forma encontramos que 46 se encuentra en el árbol.
4
Árboles
Estructura de Datos 1
RECORRIDOS EN ÁRBOLES.
Los recorridos que se pueden hacer en los árboles binarios de búsqueda, son
los mismo que en los árboles en general:
Recorrido Preorden:
Visita la raíz
Subárbol izquierdo
Subárbol derecho
Recorrido Inorden:
Subárbol izquierdo
Visita la raíz
Subárbol derecho
Recorrido Postorden:
Subárbol izquierdo
Subárbol derecho
Visita la raíz
Por ejemplo si hacen los recorridos de este árbol:
Recorrido Preorden: 34,10,25,56,46,82
Recorrido Inorden: 10,25,34,46,56,82
Recorrido Postorden: 25,10,46,82,56,34
5
Árboles
Estructura de Datos 1
BORRADO EN UN ÁRBOL BINARIO DE BÚSQUEDA
La operación de borrado es un poco más complicada que la de inserción.
1. Si el elemento a borrar es terminal u hoja, simplemente se suprime.
Por ejemplo, si quiere eliminar 25 del árbol
El árbol quedaría:
6
Árboles
Estructura de Datos 1
2.- Si el elemento a eliminar tiene un solo descendiente, entonces tiene que
sustituirse por ese descendiente.
Por ejemplo si ahora quiere borrar el 34
El árbol quedaría:
7
Árboles
Estructura de Datos 1
3.- Si el elemento a borrar tiene dos descendientes, entonces se tiene que
sustituir por el nodo que se encuentra más a la derecha del subárbol izquierdo o
por el nodo que se encuentra más a la izquierda del subárbol derecho.
Por ejemplo si ahora quiero eliminar el 56 :
El árbol quedaría:
Antes de hacer la eliminación, tenemos que buscar el elemento.
8
Descargar