Está en la página 1de 10

Instituto Politécnico Nacional

Escuela Superior de Cómputo

“Árboles”
Nombre: Gutiérrez Victorio Axel Jair
Tree
Es una estructura de
datos jerárquica,
dinámica y no lineal
que se compone de un
conjunto de nodos y
arcos, además tiene
un apuntador inicial
llamado “raíz”, puede
tener como máximo
dos hijos.

Dentro de los árboles nos encontramos con distintos elementos que


reciben distintos nombres. Subárbol: Es una sección jerárquica de un árbol

Raíz: Nodo inicial del recorrido del árbol Raíz Nivel de un nodo: Cantidad de arcos
recorridos+1 para llegar a un nodo. La raíz tiene
Padre
Padre: Nodo antecesor de otro nivel 1.

Hijo: Nodo sucesor o descendiente Altura del árbol: Representa el valor más
Hermano:
Hijo grande de los niveles de los nodos
Hermano: Nodos sucesores del mismo Padre Interior
Grado de un nodo: Cantidad de hijos de un
Hoja: Nodo sin hijos nodo

Hoja
Interior: Conjunto de nodos que no son raíz ni hojas Subárbol Grado de un árbol: Representa el valor más
grande de los grados de un nodo

Tipos

Lleno
Perfecto Completo Balanceado

TRANSFORMACIÓN DE ÁRBOLES
GENERALES A BINARIOS

Estructuras página 1
La raíz del árbol general es la raíz del árbol binario

El hijo izquierdo de
cualquier nodo del árbol El hermano derecho de
general es el hijo cualquier nodo del árbol
izquierdo de ese nodo en general es el hijo derecho
el árbol binario de ese nodo en el árbol
binario

Recorridos en Arboles
INORDEN POSORDEN Preorden

5 12 6 1 9 5 6 12 9 1 1 12 5 6 9

Estructuras página 2
Binary Search Tree
Todos los nodos del sub-árbol
izquierdo son menores que el nodo
raíz

Todos los nodos del sub-árbol


derecho son mayores que el nodo raíz

Ambos subárboles de cada nodo


también son árboles binarios de
búsqueda, es decir, tienen las dos
propiedades anteriores

Buscar
Como podemos ver , es un proceso muy simple

1.- Si el nodo que tenemos tiene el dato que buscamos


regresamos el dato

2.- Si el dato que tenemos en el nodo es menor,


regresamos la función pero cambiamos el nodo al hijo
izquierdo de nuestro nodo

2.- Si el dato que tenemos en el nodo es mayor,


regresamos la función pero cambiamos el nodo al hijo
derecho de nuestro nodo

Insertar
1.- Si no hay nodo, el que vamos insertar es la raíz

Recorte de pantalla realizado: 20/12/2021 05:19 p. m. 2.- Si el dato que tenemos en el nodo es menor al dato a
insertar, regresamos la función pero cambiamos el nodo al
hijo izquierdo de nuestro nodo

2.- Si el dato que tenemos en el nodo es mayor al dato a


insertar, regresamos la función pero cambiamos el nodo al
hijo derecho de nuestro nodo

3.-Asi hasta que lleguemos a una parte del árbol que


cumple con nuestras reglas del árbol

Aquí el truco recursivo es que regresamos un tipo de dato de Nodo

Estructuras página 1
Red-Black Trees
Reglas:
-Un nodo es rojo o negro

-La raíz del árbol es negro

-Todo nodo rojo tiene 2 nodos


hijos negros

Árbol Binario de búsqueda :


-Las hojas son nodos negros
-Arboles binarios ordenados
-Los nodos pueden tener 2 hijos
-Cada camino desde un nodo hacia
-A la izquierda menores a la derecha largos
sus hojas contiene el mismo
número de nodos negros
**El primero nodo no se cuenta**
Black Height

Sin embargo estas operaciones al aplicarlas es que rompan algunas de


las reglas antes definidas por lo cual nos ayudaremos de las rotaciones!
Operaciones: El camino más largo (de la raíz a la
-Search hoja más lejana no puede ser más
Las rotaciones cambian la forma del árbol reorganizando los subárboles
-Insert que el doble del camino más corto)
-Remove

Rotación Izquierda

-El nodo derecho se convierte en el padre -El nodo izquierdo se convierte en padre
-EL nodo izquierdo del ->Nodo derecho se convierte en su hijo derecho -El nodo derecho del nodo izquierdo se convierte en su hijo izquierdo

Enum
Es un conjunto de valores
Da un nombre a un valor Insertar
La estrategia será la siguiente Porque Rojo
-Insertamos el nodo y por default los dejamos en rojo ->Con esto romperemos
-Re coloreamos y rotamos nodos para corregir la ruptura de alguna regla 2 reglas pero son las
más fáciles de arreglar

Caso 1 Z = Root || Z.Parent == nullptr :


En el caso más sencillo encontramos que si Z será la raíz de nuestro
árbol, solo tenemos que cambiar su color a negro

Caso 2 Z.Parent == Black


Como Z en este caso va a ser rojo no habrá ningún desbalanceo

Caso 3 Z.Uncle == Red && Z.Parent == Red

Estructuras página 1
Para este caso lo que debemos hacer para resolver esta
problemática será cambiar de color padre y tío a negro y el abuelo
lo cambiaremos a rojo

Caso 4.1 Z.Uncle == Black En triangulo Caso 421 Z.Uncle == Black En Línea

Podremos identificar este caso en 2 dependiendo de Z Podremos identificar este caso en 2 dependiendo de Z
Si Z es hijo derecho
Rotamos Z.Parent hacia la izquierda Si Z es hijo del lado derecho
Rotamos Z.Grandparent hacia la izquierda
Re coloreamos el Z.Parent y Z.Grandparent

Si Z es hijo Izquierdo
Rotamos Z.Parent hacia la derecha
Si Z es hijo del lado izquierdo
Rotamos Z.Grandparent hacia la derecha
Re coloreamos el Z.Parent y Z.Grandparent

Eliminar
Para eliminar nos ayudaremos de la eliminación en un Binary Search tree

.
Usaremos una función auxiliar llamada transplant

Estructuras página 2
Una vez hecho esto habremos eliminado el nodo, y proseguiremos a
arreglar las propiedades que hayamos roto

1.- Si eliminamos un nodo rojo, no habrá ningún problema


2.-El problema viene cuando eliminamos un nodo negro y este tenga hijo
negro

Cuando se nos presente esta situación tendremos 5 casos mientras que


X no sea la raíz y X sea negro
1.- El hermano W de X - es rojo
Cambiaremos el color del padre de X a rojo y W a negro
Giraremos a la izquierda el padre de rojo
Cambiamos la asignación de W a al hermano de X en su nueva
posición

Después de esto habremos convertido el árbol sin romper alguna regla


para poder seguir trabajando con el

Caso 2.- El hermano W de X, es negro y los 2 hijos de W son negros


Cambiamos el color de W a rojo
Reasignamos W a Su padre

Caso 3.- Si W es negro y su hijo izquierdo es rojo y el derecho negro


-Cambiamos el color del hijo izquierdo de w a negro
-Cambiamos W a rojo
-Rotamos a la derecha W
-Reasignamos W al Hijo derecho del padre de X

Recorte de pantalla realizado: 08/12/2021 07:31 p. m.

Caso 4.- Si W es negro y el hijo derecho de W es rojo


-Cambiamos el color de W al color del padre de X
-Cambiamos el color del padre de X a negro
-Cambiamos el color del hijo derecho de W a negro
-Giramos a la izquierda el padre X
-Reasignamos X a la raíz del árbol

Estructuras página 3
Recorte de pantalla realizado: 08/12/2021 07:37 p. m.

Aquí cubrimos todos los casos y nos quedará hacer un else con los
mismos caso pero de lado izquierdo, y como podremos ver algunos de
estos casos nos ayudan a pasar a otro, creando un ciclo, un diagrama que
nos ayudara a entender un poco más el proceso

Estructuras página 4
Heaps
Es una estructura de datos que generalmente se representa como un
array

Es un árbol binario con las siguientes características:


- Es un árbol binario completo : lo cual quiere decir que cada nivel
está lleno, exceptuando a veces el ultimo
- Satisface la condición de cada nodo guardado es mayor o menor que
su hijo

-Simplemente numeraremos los nodos desde arriba


▪ hacia abajo y de izquierda a derecha

Podemos acceder a los elementos de la siguiente


manera:
Padre de I = (i-1)/2
Hijo izquierdo =(2*i)+1
Hijo derecho = (2*i)+2

Insertar

85 79 75 50 56 30 60 87 I=7
Padre =3
0 1 2 3 4 5 6 7

85 79 75 87 56 30 60 50 I=3
Padre=1
0 1 2 3 4 5 6 7

85 87 75 79 56 30 60 50 I=1
0 1 2 3 4 5 6 7 Padre=0

87 85 75 79 56 30 60 50
0 1 2 3 4 5 6 7

Eliminar
Estructuras página 1
Eliminar

Estructuras página 2

También podría gustarte