Arboles en Java

Post on 20-Jul-2015

985 views 1 download

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