Arboles en Java
-
Upload
jorge-vasquez-jr -
Category
Documents
-
view
985 -
download
1
Transcript of Arboles en Java
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 1/38
ARBOLES EN JAVA
INTEGRANTES:
Jorge Barreto
Jorge Crespo
Xavier Sumba
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 2/38
Índice2
Arboles (Definición) Arboles (Terminología) Factor de Equilibrio Tipos de Arboles
Recorrido de un Árbol Binario Árbol de Búsqueda Binaria(Búsqueda) Árbol de Búsqueda Binaria(Inserción) Árbol de Búsqueda Binaria(Eliminación) Rotaciones del árbol AVL Diferencias entre el árbol B, B+, B* Árbol Biselado (Biselación) Referencias
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 3/38
Arboles (Definición)3
Intuitivamente el concepto de árbol implica unaestructura donde los datos se organizan de modo quelos elementos de información estén relacionadosentre sí a través de ramas.
Definición recursiva: Árbol es un conjunto de nodosque:
• Es vacío, o bien,• Tiene un nodo raíz del que descienden0 o más sub-árboles.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 4/38
Arboles (Terminología)4
• Nodos: conjunto finito de elementos.• Ramas: conjunto finito de líneas
dirigidas, que conectan nodos.• Grado del Nodo:
número deramas descendentes con un nodo.• Raíz: primer nodo de un árbol no vacío.• Camino: secuencia de nodos en los que cada
nodo es adyacente al siguiente. Solo existe 1 camino entre la Raíz y un Nodo cualquiera. La distancia de un Nodo a la Raíz determina la rapidez de Búsqueda.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 5/38
Arboles (Terminología)5
• Padre: tiene Nodos sucesores.• Hijos: Nodos sucesores.• Descendientes: Hijos de los hijos• Ascendientes: los padre y abuelos de un nodo hijo.• Hermanos: 2 o mas nodos del mismo padre.• Hojas: nodo sin hijos .• Nivel de un nodo: distancia a la raíz.• Altura o profundidad de un árbol: nivel de la hoja del camino
más largo desde la raíz más uno. La altura de un árbol vacío es 0.
• Subárbol: cualquier estructura conectada por debajo del raíz. Cadanodo de un árbol es la raíz de un subárbol que se define por el nodo
y todos los descendientes del nodo.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 6/38
Factor De Equilibrio6
Factor de Equilibrio: diferencia de altura entrelos 2 sub-árboles de un nodo.
Árbol Equilibrado: –1<fe<1. Ej: fe=3–2=1
Árbol Perfectamente Equilibrado: fe=0.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 7/38
7
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 8/38
8
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 9/38
Recorrido De Un Arbol Binario9
Hay dos formas básicas de recorrer un árbol: El recorridoen amplitud y el recorrido en profundidad.
Recorrido en amplitud
Es aquel recorrido que recorre el árbol por niveles.
Recorrido en profundidad
Recorre el árbol por subárboles.
Hay tres formas: en inorden, preorden y postorden.Cada una de ellas tiene una secuencia distinta para analizarel árbol.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 10/38
Recorrido De Un Arbol Binario10
1. Inorden Recorrer el subarbol izquierdo en inorden.Examinar la raíz.Recorrer el subarbol derecho en inorden.
Preorden Examinar la raíz.Recorrer el subarbol izquierdo en preorden.recorrer el subarbol derecho en preorden.
Postorden Recorrer el subarbol izquierdo en postorden.Recorrer el subarbol derecho en postorden.Examinar la raíz.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 11/38
Ejemplo Recorrido AB11
Amplitud:
12 - 8,17 - 5,9,15
Profundidad: Inorden: 5-8-9-12-15-17
Preorden: 12-8-5-9-17-15
Postorden: 5-9-8-15-17-12
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 12/38
Operaciones(BUSQUEDA)12
La búsqueda consiste acceder a la raíz del árbol, si elelemento a localizar coincide con éste la búsqueda haconcluido con éxito, si el elemento es menor se buscaen el subárbol izquierdo y si es mayor en el derecho.Si se alcanza un nodo hoja y el elemento no ha sidoencontrado se supone que no existe en el árbol.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 13/38
Árbol Binario de Búsqueda (Búsqueda)13
Buscaremos el número 14
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 14/38
Árbol Binario de Búsqueda (Búsqueda)14
Búsqueda 14
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 15/38
Árbol Binario de Búsqueda (Búsqueda)15
Búsqueda 14
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 16/38
Operaciones(INSERCIÓN)16
La inserción es similar a la búsqueda. Si tenemosinicialmente como parámetro un árbol vacío se creaun nuevo nodo como único contenido el elemento ainsertar. Si no lo está, se comprueba si el elementodado es menor que la raíz del árbol inicial con lo quese inserta en el subárbol izquierdo y si es mayor seinserta en el subárbol derecho. De esta forma las
inserciones se hacen en las hojas.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 17/38
Árbol Binario de Búsqueda (Inserción)17
Insertaremos los números 5, 9, 14, 3, 1
5
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 18/38
Árbol Binario de Búsqueda (Inserción)18
5, 9, 14, 3, 1
5
9
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 19/38
Árbol Binario de Búsqueda (Inserción)19
5, 9, 14, 3, 1
14
5
9
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 20/38
Árbol Binario de Búsqueda (Inserción)20
5, 9, 14, 3, 1
14
5
93
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 21/38
Árbol Binario de Búsqueda (Inserción)21
5, 9, 14, 3, 1
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 22/38
Operaciones(ELIMINACIÓN)22
Existen varios casos a tener en consideración: Borrar un nodo hoja: simplemente se borra y se
establece a nulo el apuntador de su padre.
Borrar un nodo con un subárbol hijo: se borrael nodo y se asigna su subárbol hijo como subárbolde su padre.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 23/38
Operaciones(ELIMINACIÓN)23
Borrar un nodo con dos subárboles hijo: lasolución está en reemplazar el valor del nodo por elde su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo. Su predecesor eninorden será el nodo más a la derecha de su subárbolizquierdo (mayor nodo del subarbol izquierdo), y susucesor el nodo más a la izquierda de su subárbol
derecho (menor nodo del subarbol derecho).
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 24/38
Árbol Binario de Búsqueda (Eliminación)24
Eliminación del número 3
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 25/38
Árbol Binario de Búsqueda (Eliminación)25
Eliminación del número 3
14
5
93
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 26/38
Árbol Binario de Búsqueda (Eliminación)26
Eliminación del número 3
14
5
9
1
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 27/38
Árbol Binario de Búsqueda (Eliminación)27
Eliminación del número 3
14
5
91
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 28/38
Rotaciones del Árbol AVL
Rotaciones Simples: De un árbol de raíz (r) y de hijosizquierdo (i) y derecho (d), lo que haremos será formar unnuevo árbol cuya raíz sea la raíz del hijo izquierdo, como hijoizquierdo colocamos el hijo izquierdo de i (nuestro i’) y comohijo derecho construimos un nuevo árbol que tendrá como
raíz, la raíz del árbol (r), el hijo derecho de i (d’) será el hijoizquierdo y el hijo derecho será el hijo derecho del árbol (d)
28
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 29/38
Rotaciones del Árbol AVL
Rotaciones Dobles: La rotación doble a laderecha son dos rotaciones simples, primerorotación simple izquierda y luego rotación simplederecha.
29
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 30/38
Diferencia entre Árbol B, B+ y B*30
La familia de árboles B son árboles multicamino,esto significa que tienen más de una llave en susnodos. Los árboles binarios tienen solamente unallave en sus nodos. El número de llaves que tienemás uno se dice que es el orden de un árbol B, B* oB+.
En estos árboles las principales operaciones son
inserción, eliminación y búsqueda.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 31/38
Diferencia entre Árbol B, B+ y B*31
En los árboles B las llaves se almacenan en el árbol y cada nodo debe tener al menos la mitad de suselementos ocupados, esto quiere decir que enalgunos nodos hay huecos. El único nodo que nonecesita tener la mitad de sus localidades ocupadases el nodo raíz, que puede tener solamente una llave.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 32/38
Diferencia entre Árbol B, B+ y B*32
En los árboles B* los nodos deben ocuparse al menosen 2/3 en vez de 1/2 (la mitad) esa es la diferencia,en lo demás se parecen a los árboles B.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 33/38
Diferencia entre Árbol B, B+ y B*33
La diferencia entre el árbol B y B+, consiste en quelas llaves se almacenan en los nodos del último niveldel árbol y esos nodos se enlazan unos con otrosformando una lista ligada que puede ser ligada en
forma sencilla o doblemente ligada. Las llaves serepiten en los nodos intermedios y en el nodo raízpara facilitar la búsqueda. Puede haber llaves en losnodos intermedios que no existan en los nodos hoja
porque alguna vez se insertaron y luego se borraronpero se conservan para propósitos de localizaralgunas llaves.
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 34/38
Árbol Biselado (Biselación)34
Esta operación traslada un nodo x, que es el nodo alque se accede, a la raíz . Para realizar esta operacióndebemos rotar el árbol de forma que en cadarotación el nodo x está más cerca de la raíz.
Podríamos distinguir 3 casos generales:
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 35/38
Si x es hijo izquierdo de p entonces realizaremos unarotación simple derecha. En caso de que x sea elderecho la rotación que deberemos realizar es simpleizquierda.
Caso 135
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 36/38
Si x es hijo y nieto izquierdo de p y q ,respectivamente. Entonces debemos realizarrotación doble a la derecha, en caso de que x seahijo y nieto derecho de p y q la rotación será doble
izquierda.
Caso 236
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 37/38
En caso de que x sea hijo izquierdo de p y nietoderecho de q realizaremos una rotación simplederecha en el borde entre x y p y otra simpleizquierda entre x y q . En caso contrario, x sea hijo
derecho y nieto izquierdo de q , la rotacionessimples será izquierda y después derecha.
Caso 337
5/17/2018 Arboles en Java - slidepdf.com
http://slidepdf.com/reader/full/arboles-en-java 38/38
Referencias
http://es.wikipedia.org/wiki/%C3%81rbol_%28inform%C3%A1tica%29 http://es.wikipedia.org/wiki/%C3%81rbol_binario http://es.wikipedia.org/wiki/%C3%81rbol_binario_de_b%C3%BAs
queda
http://es.wikipedia.org/wiki/%C3%81rbol_AVL http://es.wikipedia.org/wiki/%C3%81rbol_biselado http://es.wikipedia.org/wiki/%C3%81rbol-B http://es.wikipedia.org/wiki/%C3%81rbol-B%2B http://es.wikipedia.org/wiki/%C3%81rbol-B*
http://es.wikipedia.org/wiki/%C3%81rbol_AVL#Rotaciones http://es.wikipedia.org/wiki/%C3%81rbol_biselado#Operaci.C3.B3n_de_Biselaci.C3.B3n
http://mx.answers.yahoo.com/question/index?qid=20111129190121AAp8yZn
38