TEMA 1: INTRODUCCION (NO ENTRA EN
EXAMEN)
//NO TODOS LOS LENGUAJES INICIALIZAN LOS VALORES, JAVA LO HACE POR
DEFECTO
//OJO CON LOS == DE OBJETOS
1. UML
+ -> Se usa para indicar que es pblico (CONSTANTES)
- -> Se usa para indicar que es privado. No tiene get ni set (ATRIBUTOS)
# -> Se usa para indicar que es protegido
NOMBRE de la Clase
- Nombre Atributos
+ Constantes
+ Metodo(valor:int, index:bool): Boolean
- Metodo2()
2. NORMAS DE ESTILO
Clases la 1 letra con mayusculas
Atributos y mtodos la 1 letra miniscula
Mtodos compuestos separados por _ y con Mayuscula la 1 de la 2 palabra
Constantes TODO en maysculas
Comentar con JavaDoc
3. PILAS
Mtodos siempre con complejidad O(1) y NUNCA varia aunque haya diferente
implementacin
Mtodos
o Size(), is_Empty(), top(), push(valor), pop()
Implementacin
o Arrays
Posicin la indicas con un tope que esta indicando a la 1
posicin vacia
Errores en la diapositiva
Pop()-> 9 deberia estar fuera
Errores en el cdigo
Top()-> return s[top-1]
Push()-> falta else para println()
o Lista enlazada
Trabaja con punteros
// BUSCAR LA IMAGEN DE LA PILA (no la veo en la diapositiva)
???-> se traduce en -top:int size:int s: float[]
La clase FloatNode tiene los atributos privados pero con get y set por lo tanto
es como si fueran pblicos. NO ES UNA BUENA IMPLEMENTACION
//ES MUCHO MAS EFICIENTE LINKEDLIST QUE ARRAY LIST SI HAY QUE ESTAR
BORRANDO E INSERTANDO
4. COLAS
Toda implementacin tiene que tener O(1) para eso lo que debe de hacer es
tener una referencia a cabecera y final (tanto para esttico como dinmico)
5. LISTAS
Estructura de datos mas compleja con infinitas operaciones.
FloatArrayList
o Elementos necesarios: size, lastelement, array
TEMA 2 ARBOLES
//RECUERDA POSITION<E> solo tiene getValue()
Metodos bsicos
Size
isEmpty
Iterator -> para recorrer
Metodos de acceso
Position <E> root
Position <E> parent (Position <E>)
Position<E> children(Position <E>)
Metodos de consulta
isLeaf(Position<E>)
isInternal
isRoot
Metodos de actualizacin
replace (position <E>)
Recorrido de arboles -> NO SE PUEDE RECORRER EN INORDEN
PARA RECORRER EN ANCHURA HACE FALTA UNA COLA
RECORRIDO EN PROFUNDIDAD ES EL MISMO CODIGO QUE LA COLA PERO CON UNA PILA.
TEMA 2B- Arboles Binarios
TEMA 3- TABLAS HASH
Funcin hash crea un cdigo hash, que es un numero entero y lo proyecta respecto al tamao
de la tabla (modulo tamao tabla).
El cdigo hash es nico pero el cdigo dispersado si se puede crear repetido provocando
colisiones, que tienen que ser el minimo.
DIAPOSITIVA 20 ENTRA EN EXAMEN -> Ejercicio siguiente
Inserta en una tabla hash de 13 elementos quiero insertar las entradas <18,A> <41,Y> <22,C>
<44,D> <59,E>
1. Elegir funcin hash h(x) = x mod 13
2. <18,A> h(18) = 18 mod 13 = 5 -> se inserta en la posicin 5
0 1 2 3 4 5 6 7 8 9 10 11 12
<13,A>
3. Coges el siguiente valor <41,Y> =2
0 1 2 3 4 5 6 7 8 9 10 11 12
<41,Y> <13,A>
4. Coges el siguiente <44,D> = 5
0 1 2 3 4 5 6 7 8 9 10 11 12
<41,Y> <13,A> <44,D>
Como es una lista no hay problema la lista tiene 2 atributos uno dupla, punturo a siguiente y
primero estar 13,A en el segundo elemento estar 44,D
El 75% para direccionamieto con listas (encabezamiento abierto) y el 50% en direccionamiento
abierto para mantener el rendimiento optimo. El % es de elementos no de posiciones.
Clustering secundario: series largas de posiciones ocupadas incrementan el tiempo medio de
bsqueda
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
algo algo Algo algo
H(k,i) = h(k) + c1*i + c2*i2 siendo c1 = 0 y c2 = 1 k = x y h(k) = 3
Para i = 0 -> h(k,i) = 3 + 0 = 3
Para i = 1 -> 3 +1^1 = 4
Para i = 2 -> 3 + 2^2 = 7
Para I = 3 -> 3 + 3^2=12
Para I = 4 -> 3 + 4^2 = 19 -> 3
NO SE PUEDE AADIR EL NUMERO CLUSTERING SECUNDARIO
5. AVL
6. Diccionarios ordenados
//Ejercicio de borra todos los elementos que tienen una misma clave
7. Arboles binario bsqeda
Ejercicios
8. Arboles rojo-negro
La altura se mide en funcin de los nodos que sean negros.
Los punteros a null cuentan como negros.
La raz es nodo negro
Los hijos de un nodo rojo son negros
Todas las hojas tienen la misma profundidad negra
Nunca hay 2 rojos seguidos
Al insertar un nodo, salvo la raz (negro) son ROJOS, eso es lo que provoca desequilibrios, 2
rojos seguidos y se llama desequilibrio doblerojo.
DOBLE ROJO
Los nodos involucrados son el insertado, el padre, el abuelo, los hermanos y los tios.
1. Hay que mirar al tio
a. Es rojo
2. pintar padre y tio de negro y el abuelo de rojo, SALVO LA RAIZ QUE SIEMPRE
ES NEGRA
b. Es negro
2. Reestructuracin trinodo: es decir como si fuera un avl, OJO que al rotar
solo modificas los valores, el color de los nodos es b negro y a y c de rojo.
//ESCANEAR EJERCICIO DE ARBOLES ROJO NEGRO
BORRADOS EN UN ARN
Se hace igual que los ABB lo que pasa es que tambin pueden producirse problemas.
Si borro un nodo rojo no pasa nada
Si borro un nodo negro con un nico hijo rojo, el valor de ese nodo rojo pasa a ser el
valor del nodo negro
Si borro un nodo negro con 2 hijos. Hay que asignar un doble negro. 3 situaciones Para
saber el caso mirar a los sobrinos.
o Caso 1: el hermano del doble negro, si es negro y tiene un hijo rojo
Aplicar reestructuracin trinodo (sobrino,hermano y abuelo)
A y c de negro
B el color del abuelo
El del doble negro es simple negro
o Caso 2: el hermano es negro y sus 2 hijos son negros
Recoloreado de r como negro e y como rojjo
Si X es rojo se ilumina de rojo
o Caso 3: el hermano es rojo
Si y es el h_der de x, z es el h_der de y
Si y es el h_izq de x, z es el h_izq de y
Colorear y de negro y x de rojo
//ESCANEAR HOJA 1 DEL CUADERNILLO -> mirar tambin la web de las diapositivas