Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Datos
Nodo Raíz
A
B C
D E F G
K
H
Más terminología
• Nodo Padre: Se le llama así al nodo predecesor de un elemento.
• Nodo Hijo: Es el nodo sucesor de un elemento.
• Hermanos: Nodos que tienen el mismo nodo padre.
A
Nodo Padre
B C
B C
D E F G
D, H, F y K son Nodos Hojas
K
H
• Qué es un árbol?
B C
D E F G
Subárbol derecho de C
K
H
Subárbol izquierdo de C
Altura y Niveles
A
Altura Nivel 0
del árbol C
B
=4 Nivel 1
D E F G
Nivel 2
K
H
Nivel 3
Estructuras de Datos
21
30
33 33
13 21
5 25 36 41
18 32
40 43
15
¿Por qué no son ABB?
21
5
33 6
13 1
17 18 22 4
25 2
15 40
• Ya con estas definiciones claras sobre arboles;
• ahora estos son conceptos generales de lo que es un
árbol, para poder implementarlos en lenguaje C++
tenemos que tener conocimientos previos sobre
listas enlazadas y su implementación.
•
Cada elemento(nodo) de un árbol ABB cuenta con
tres campos:
class NodoArbol
{
public:
int info;
NodoArbol *izq, *der;
NodoArbol( );
NodoArbol(int dato);
};
NodoArbol(void) { izq = der = NULL; }
NodoArbol(int dato) { info = dato; izq = der = NULL; }
Continuación…
10 40 40
18 25 10 18 25
Paso
3 21
13 33
10 18 40
25
Encontrado
Implementación de la búsqueda
...
p=raiz;
while (p != NULL)
{ if (p->info == valor)
return p; P contiene la dirección del nodo
else que tiene el valor buscado
… p = p -> izq;
else p = p-> der;
Proceso para agregar nodos...
• Reglas:
– El valor a insertar no existe en el árbol.
– El nuevo nodo será un Nodo Hoja del árbol.
• Procedimiento
1. Buscar el Nodo Padre del nodo a agregar.
2. Agregar el nodo hoja.
Ejemplo
Agregar el valor 26
10 40 40
18 25 10 18 25
Paso Paso
3 21 4 21
33 13 33
13
18 40 10 18 40
10 25 25
Se encontró el Nodo
Padre Agregar el nodo
26
Comentarios importantes....
10
13
Paso 21
1
Nodo Padre
33 localizado
13
Paso
10 18 25 40 21
2
13 33
10 18 40
25
Desconectarlo y
liberar el nodo
Caso: Eliminar Nodo con un hijo
Eliminar el valor 25
Paso 21
1
Nodo Padre
33 localizado
13
Paso
10 18 25 40 21
2
29 13 33
25
27 30 40
10 18
29
Conectar el Nodo
Padre con el Nodo
27 30 Hijo y liberar el
nodo.
Caso: Eliminar nodo con dos hijos
21
33
El predecesor de: Es:
13
33 30
10 25 40 21 13
29 29 27
27 30
Sucesor
Uno a la DERECHA y todo a la IZQUIERDA
21
El sucesor de: Es:
33 21 25
13
33 40
10 18 25 40
29 30
29
27 30
Implementación del....
10 40
40 18 25
10 18 25
Localizar el Predecesor
13 33
13 33
10 25 40
18
10 18 40
25 Desconectar y liberar el
nodo del Predecesor
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el Sucesor
Paso Localizar el valor a Paso 21
21 borrar 2
1
13 33
13 33
10 40
40 18 25
10 18 25
Localizar el Sucesor
13 33
13 33
10 18 25 40
10 18 40 Desconectar y liberar el
25
nodo del Sucesor