arboles en java

38
  ARBOLES EN JAVA INTEGRANTES: Jorge Barreto Jorge Crespo Xavier Sumba 1

Upload: jorge-vasquez-jr

Post on 20-Jul-2015

983 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 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

Page 2: Arboles en Java

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

Page 3: Arboles en Java

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.

Page 4: Arboles en Java

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.

Page 5: Arboles en Java

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.

Page 6: Arboles en Java

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.

Page 7: Arboles en Java

5/17/2018 Arboles en Java - slidepdf.com

http://slidepdf.com/reader/full/arboles-en-java 7/38

7

 

Page 8: Arboles en Java

5/17/2018 Arboles en Java - slidepdf.com

http://slidepdf.com/reader/full/arboles-en-java 8/38

8

 

Page 9: Arboles en Java

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.

 

Page 10: Arboles en Java

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.

 

Page 11: Arboles en Java

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

 

Page 12: Arboles en Java

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.

 

Page 13: Arboles en Java

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

 

Page 14: Arboles en Java

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

 

Page 15: Arboles en Java

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

 

Page 16: Arboles en Java

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.

 

Page 17: Arboles en Java

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

 

Page 18: Arboles en Java

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

 

Page 19: Arboles en Java

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

 

Page 20: Arboles en Java

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

 

Page 21: Arboles en Java

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

 

Page 22: Arboles en Java

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.

 

Page 23: Arboles en Java

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).

 

Page 24: Arboles en Java

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

 

Page 25: Arboles en Java

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

 

Page 26: Arboles en Java

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

 

Page 27: Arboles en Java

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

 

Page 28: Arboles en Java

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

 

Page 29: Arboles en Java

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

 

Page 30: Arboles en Java

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.

 

Page 31: Arboles en Java

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.

 

Page 32: Arboles en Java

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.

 

Page 33: Arboles en Java

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.

 

Page 34: Arboles en Java

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:

 

Page 35: Arboles en Java

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

 

Page 36: Arboles en Java

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

 

Page 37: Arboles en Java

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

 

Page 38: Arboles en Java

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