17 de junio - JoseA4718/Portafolio-I-2020 GitHub Wiki
Al inicio de la clase se hizo una actividad para hablar sobre experiencias positivas y negativas acerca de la educación virtual. Después, se hizo un repaso sobre los árboles binarios. Se comenzaron a ver los principales métodos aplicables a los árboles:
Contains
Esta operación hace un recorrido sobre el árbol y dependiendo del resultado de la búsqueda devuelve un valor booleano.
Min-Max
Busca el mayor o menor valor en el árbol, si se busca el menor únicamente se mueve recursivamente a la izquierda hasta no poder más y ese será el menor, en caso de buscar al mayor, hará lo mismo pero hacia la derecha.
Insert
Se recorre el árbol revisando cumplir que sea mayor o menor que cada nodo y que ese nodo tenga las posiciones de los hijos en null, para poder alojarlo correctamente. Por ejemplo si se tiene el siguiente árbol:
Si se quiere añadir el nodo "52", primero revisará que al ser mayor que la raíz, debe ir a revisar con su hijo derecho. Al compararse con 72 y darse cuenta que es menor y el hijo izquierdo de 72 no es nulo, debe ir a compararse con el hijo izquierdo de 72. Al compararse con 54 se da cuenta que es menor, y su hijo izquierdo está nulo, por lo que se alojaría como hijo izquierdo de 54.
Delete
Existen tres tipos de delete:
- Eliminar nodo hoja
- Eliminar un nodo que tiene un hijo
- Eliminar un nodo que tiene dos hijos.
Caso 1. Para eliminar un nodo hoja, únicamente se debe eliminar la referencia que llega a ese nodo.
Caso 2. Para eliminar un nodo con un hijo lo que se hace es eliminar la referencia hacia el nodo que se desea eliminar y en este caso el nodo que lo referenciaba pasará ahora a referenciar al nodo hijo del nodo eliminado
Caso 3. Cuando el nodo a eliminar tiene dos hijos lo que se realiza es buscar al nodo de menor valor de los valores del lado derecho al nodo que voy a eliminar, simplemente se sustituye con el valor que se elimina y listo.