ÁRBOLES
1
DEFINICIÓN
Un árbol dirigido es una estructura:
• Jerárquica porque los componentes están a distinto nivel.
• Organizada porque importa la forma en que esté dispuesto el
contenido.
• Dinámica porque su forma, tamaño y contenido pueden variar
durante la ejecución.
Un árbol puede ser:
• vacío,
• Una raíz + subárboles. 2
REPRESENTACIÓN DE UN ÁRBOL.
• Mediante diagramas de Venn
• Mediante círculos y flechas
• Mediante paréntesis anidados:
( a ( b (e,f), c, d ) )
3
a
b c d
e
f a
c d
b
e f
CONCEPTOS BÁSICOS
• Si hay un camino de A hasta B, se dice que A es antecesor de B, y que
B es sucesor de A.
• Padre es el antecesor inmediato de un nodo
• Hijo, cualquiera de sus descendientes inmediatos.
• Descendiente de un nodo, es cualquier sucesor de dicho nodo.
• Hermano de un nodo, es otro nodo con el mismo padre.
• Generación, es un conjunto de nodos con la misma profundidad.
4
CONCEPTOS BÁSICOS (CONT.)
• Raíz es el nodo que no tiene ningún predecesor (sin padre).
• Hoja es el nodo que no tiene sucesores (sin hijos) (Terminal). Los que
tienen predecesor y sucesor se llaman nodos interiores.
• Rama es cualquier camino del árbol.
• Bosque es un conjunto de árboles desconectados.
• Nivel o profundidad de un nodo, es la longitud del camino desde la
raíz hasta ese nodo.
El nivel puede definirse como 0 para la raíz y nivel
(predecesor)+1 para los demás nodos. 5
CONCEPTOS BÁSICOS (CONT.)
• Los nodos de la misma generación tienen el mismo nivel.
• Grado de un nodo, es el número de flechas que salen de ese nodo
(hijos). El número de las que entran siempre es uno.
• Grado de un árbol, es el mayor grado que puede hallarse en sus
nodos.
• Longitud del camino entre 2 nodos: es el número de arcos que hay
entre ellos.
6
CONCEPTOS BÁSICOS (CONT.)
7
Raíz
hijo
Hermano
Padre
hoja
Subárbol
Nivel de profundidad = 7
Grado de un nodo = 3
Grado del árbol = 3
TIPOS DE ÁRBOLES
Un árbol ordenado: Es aquel en el que las ramas de los nodos
están ordenadas.
• Los de grado 2 se llaman árboles binarios.
• Cada árbol binario tiene un subárbol izquierda y subárbol
derecha.
8
+
- ^
3.5
/
B
A
D
C
TIPOS DE ÁRBOLES (CONT.)
Árboles de expresión
• Representan un orden de ejecución
9
+
+
*
B
A * E
D
C
*
+ -
7 12 9
(A* B) + C * D + E (7 + 12) * (-9) → -171
TIPOS DE ÁRBOLES (CONT.)
• Árboles similares: Los que tienen la misma estructura (forma)
• Árboles Equivalentes: Son los árboles similares y sus nodos contienen la
misma información.
• Árboles n-ario: Es un árbol ordenado cuyos nodos tiene N subárboles, y
donde cualquier número de subárboles puede ser árboles vacíos 10
1
2 5
6
4
3
9
8
7
a
b e
f
d
c
i
h
g
TIPOS DE ÁRBOLES (CONT.)
Árbol binario completo:
• Es un árbol en el que todos sus nodos, excepto los del ultimo nivel, tienen
dos hijos.
• Número de nodos en un árbol binario completo = 2h –1 (en el ejemplo h
= 4, → 15) esto nos ayuda a calcular el nivel de árbol necesario para
almacenar los datos de una aplicación.
11
ÁRBOLES BINARIOS
DE BÚSQUEDA (ABB)
12
ÁRBOLES BINARIOS DE BÚSQUEDA
• Un árbol es un ABB si éste es binario y
sus nodos son subárboles de
búsqueda binarios y contienen
información ordenada de tal que
todos los elementos a la izquierda de
la raíz son menores a la raíz y todos
lo elementos a la derecha de la raíz
son mayores a la raíz.
13
CARACTERÍSTICAS DE UN ABB
• Todos los nodos a la izquierda son menores al padre.
• Todos los nodos a la derecha son mayores al padre.
• Y solo pueden tener 2 hijos a lo mucho.
14
50
95
90
110
110
88
85
100
105
102
68
34
40
45
26
42
8
CONVERSIÓN DE UN ÁRBOL GENERAL EN UN
ÁRBOL BINARIO
• Los hermanos se enlazan en forma horizontal (lineal)
• Se enlaza en forma vertical el padre con el hijo que se encuentra mas a la
izquierda y se elimina el enlace de este padre con los demás hijos.
• Se rota el diagrama resultante 45 grados hacia la izquierda.
15
CONVERSIÓN DE UN ÁRBOL GENERAL EN
UN ÁRBOL BINARIO (CONT.)
16
A
B D
C
E F G H I J K
L M N O
A
M
B C D
F
E G I
H K
J
O
N
L
=
queda así
O
A
M
B
C
D
F
E
G
I
H
K
J
N
L
REPRESENTACIÓN DE UN ÁRBOL BINARIO EN
LA MEMORIA.
• Cada noto tiene la siguiente forma:
17
Raíz
R
A
B C
D
E
izq info der
CLASE NODO DE UN ABB
Class Nodo{
nodo izq;
nodo der;
int dato;
}
18
OPERACIONES SOBRE UN ÁRBOL
• Recorrer árbol
• Preorden
• Inorden
• Postorden
• Inserción nodo
• Eliminar nodo
• Buscar nodo con información
• Sumar los nodos
• Calcular profundidad del árbol
• Contar nodos
• Contar hojas.
19
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB)
• Recorrido en preorden (prefijo)
• Visita la raíz.
• Recorre el subárbol izquierdo.
• Recorre el subárbol derecho.
20
A
B C
D E F
H I
G
RID
Preorden = A B D G C E H I F
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB) (CONT.)
PREORDEN (NODO)
{NODO es un dato de tipo apuntador}
{INFO, IZQ, DER son campos del registro}
Si nodo != null entonces
{
Escribir NODO.INFO
PREORDEN (NODO.IZQ)
PREORDEN (NODO.DER)
}
21
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB) (CONT.)
• Recorrido en inorden (infijo)
• Recorre el subárbol izquierdo.
• Visita la raíz
• Recorre el subárbol derecho.
22
A
B C
D E F
H I
G
Inorden: D G B A H E I C F
IRD
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB) (CONT.)
INORDEN (NODO)
{NODO es un apuntador a registro}
Si NODO != null entonces
{
INORDEN (NODO.IZQ);
Escribir NODO.INFO;
INORDEN (NODO.DER);
}
23
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB) (CONT.)
• Recorrido en postorden (postfijo)
• Recorre el subárbol izquierdo.
• Recorre el subárbol derecho.
• Visita la raíz.
24
A
B C
D E F
H I
G
Postorden : G D B H I E F C A
IDR
RECORRIDOS DE UN ÁRBOL DE BÚSQUEDA
BINARIA (ABB) (CONT.)
POSTORDEN (NODO)
Si NODO != null entonces
{
POSTORDEN (NODO.IZQ);
POSTORDEN (NODO.DER);
Escribir NODO.INFO;
}
25
INSERCIÓN EN UN ABB
• La inserción es una operación que se puede realizar eficientemente en un árbol
binario de búsqueda. La estructura crece conforme se inserten elementos al árbol.
• Los pasos que deben realizarse para insertar un elemento a un ABB son los
siguientes:
• Debe compararse el valor o dato a insertar con la raíz del árbol. Si es mayor, debe
avanzarse hacia el subárbol derecho. Si es menor, debe avanzarse hacia el subárbol
izquierdo.
26
INSERCIÓN EN UN ABB (CONT.)
• Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las
siguientes condiciones
• El subárbol derecho es igual a vació, o el subárbol izquierdo es igual a vació; en
cuyo caso se procederá a insertar el elemento en el lugar que le corresponde.
• El valor o dato que quiere insertarse es igual a la raíz del árbol; en cuyo caso
no se realiza la inserción.
27
INSERCIÓN EN UN ABB (CONT.)
Algoritmo
Si NODO ≠ Null{
Si (INFOR < NODO.INFO)
Regresar a INSERCION1 con NODO.IZQ e INFOR
sino
si ( INFOR > NODO.INFO)
Regresar a INSERCION1 con NODO.DER e INFOR
sino
Escribir “El nodo ya se encuentra en el árbol”
} // } si
else
CREA (OTRO) {Crear un nuevo nodo}
Hacer OTRO.IZQ = null,
OTRO.DER = null,
OTRO.INFO = INFOR y NODO = OTRO
}
28
INSERCIÓN EN UN ABB (CONT.)
• Supóngase que quieren insertarse las siguientes los siguientes datos en un
árbol binario de búsqueda que se encuentra vació.
120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56
29
INSERCIÓN EN UN ABB (CONT.) SOLUCIÓN
120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56
30
120
87 140
43 130
56
I
22
65
99
ELIMINAR UN NODO
Para eliminar un nodo existen los siguientes casos:
1. Si el elemento a borrar es Terminal (hoja),
2. Si el elemento a borrar tiene un solo hijo,
3. Si el elemento a borrar tiene los dos hijo,
31
ELIMINAR UN NODO (CONT.)
• Caso 1
Si el elemento a borrar es terminal (hoja), simplemente se elimina.
aux = aux.izq = null
32
Ejemplo eliminar nodo 7
8
1
9
7
6
8
1
9
7
6
8
1
9
6
ELIMINAR UN NODO (CONT.)
• Caso 2
Si el elemento a borrar tiene un solo hijo, entonces tiene que sustituirlo por el
hijo
33
8
1
9
7
1 9
7
8
1
9
7
Ejemplo: eliminar nodo 8
ELIMINAR UN NODO (CONT.)
•Caso 3
Si el elemento a borrar tiene los dos hijos, entonces se tienen
que sustituir por el nodo que se encuentra mas a la izquierda
en el subárbol derecho, o por el nodo que se encuentra mas a
la derecha en el subárbol izquierdo.
34
Ejemplo: eliminar el 6
8
1
9
7
6
8
1
9
7
7
8
1
9
7
ELIMINAR UN NODO (CONT.)
si NODO !=null entonces
si Dato < NODO.info
Eliminación (NODO.izq, Dato)
si no
si dato > NODO.INFO
entonces Eliminación (NODO.der, Dato
si no
otro = NODO
si otro.der == null
entonces NODO = otro.izq
si no
si otro.izq == null
entonces NODO = otro.der
35
ELIMINAR UN NODO (CONT.)
Si no
{aux = otro.izq
aux1 = Aux
while (aux.der != null )
aux1 = aux
aux = aux.der
}
otro.info = aux.info
otro = aux
aux1.der = aux.izq
quita (otro) (null)
si no Escribir (‘el nodo no se encuentra en el árbol’)
} 36
ELIMINAR UN NODO (CONT.)
• Elimina el 22,. 99, 87, 120, 140, 135, 56
37
93
87
43 99
120
130
140
65
56
22
135
BUSCAR NODO CON INFORMACIÓN
Si dato < NODO.info
Si NODO.IZQ == null
Escribir “El nodo no se encuentra en el árbol”
Si no
Búsqueda (NODO.izq,dato)
Si no
Si Dato > NODO.INFO entonces Si NODO.DER = null
Escribir “No se encuentra”
Si no Búsqueda (NODO.der,dato)
Si no Escribir “El NODO se encuentra en el árbol”
si nodo != null
si Dato < NODO .INFO
Búsqueda (Nodo.izq,Dato)
si no
si Dato > No dato.der
Búsqueda (No dato.der,dato)
si no
escribir “El Dato se encuentra”
Si no Escribir “El dato no se encuentra en el árbol”
38
CONTAR NODOS
//cuenta los nodos que hay en el árbol
public static int nodo (nodo raiz){
if (raiz == null) return 0;
else
return (1+ Nodo( raiz.der) + Nodo( raiz.izq))
}
39
SUMAR LOS NODOS
//suma los nodos que hay en el árbol
public static int sumaNodo( nodo raiz){
if(raiz == null) return 0;
else
Return (sumaNodo (raiz.der) + sumaNodo (raiz.izq) )
}
40
CALCULAR PROFUNDIDAD DEL ÁRBOL
// calcula la profundidad de un árbol
public int profundidad (Nodo raiz) {
if (raiz == null) return 0;
If (profundidad (raiz.der) > profundidad (raiz.izq))
return profundidad (raiz.der) + 1;
else
return profundidad( raiz.izq) + 1
}
41
CONTAR HOJAS.
// Cuenta hojas de un árbol
public int contarHojas (Nodo raiz) {
if (raiz = = null) return 0;
If ((raiz.der == null) && (raiz.izq == null))
Return 1;
else
return contarHojas (raiz.izq) + contarHojas (raiz.der)
}
42
LIGAS
• Inserta elimina y busca en un árbol binario
• http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html
• http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20
applet.htm
• Genera apartir de expresiones aritmeticas los árboles
binarios
• http://www.cs.jhu.edu/~goodrich/dsa/05trees/Demo1/
43
EJERCICIO
Realiza la implementación de un árbol con sus funciones
44
• Recorrer árbol
• Preorden
• Inorden
• Postorden
• Inserción nodo
• Eliminar nodo
• Buscar nodo con información
• Sumar los nodos
• Calcular profundidad del árbol
• Contar nodos
• Contar hojas.

Arboles.pdf

  • 1.
  • 2.
    DEFINICIÓN Un árbol dirigidoes una estructura: • Jerárquica porque los componentes están a distinto nivel. • Organizada porque importa la forma en que esté dispuesto el contenido. • Dinámica porque su forma, tamaño y contenido pueden variar durante la ejecución. Un árbol puede ser: • vacío, • Una raíz + subárboles. 2
  • 3.
    REPRESENTACIÓN DE UNÁRBOL. • Mediante diagramas de Venn • Mediante círculos y flechas • Mediante paréntesis anidados: ( a ( b (e,f), c, d ) ) 3 a b c d e f a c d b e f
  • 4.
    CONCEPTOS BÁSICOS • Sihay un camino de A hasta B, se dice que A es antecesor de B, y que B es sucesor de A. • Padre es el antecesor inmediato de un nodo • Hijo, cualquiera de sus descendientes inmediatos. • Descendiente de un nodo, es cualquier sucesor de dicho nodo. • Hermano de un nodo, es otro nodo con el mismo padre. • Generación, es un conjunto de nodos con la misma profundidad. 4
  • 5.
    CONCEPTOS BÁSICOS (CONT.) •Raíz es el nodo que no tiene ningún predecesor (sin padre). • Hoja es el nodo que no tiene sucesores (sin hijos) (Terminal). Los que tienen predecesor y sucesor se llaman nodos interiores. • Rama es cualquier camino del árbol. • Bosque es un conjunto de árboles desconectados. • Nivel o profundidad de un nodo, es la longitud del camino desde la raíz hasta ese nodo. El nivel puede definirse como 0 para la raíz y nivel (predecesor)+1 para los demás nodos. 5
  • 6.
    CONCEPTOS BÁSICOS (CONT.) •Los nodos de la misma generación tienen el mismo nivel. • Grado de un nodo, es el número de flechas que salen de ese nodo (hijos). El número de las que entran siempre es uno. • Grado de un árbol, es el mayor grado que puede hallarse en sus nodos. • Longitud del camino entre 2 nodos: es el número de arcos que hay entre ellos. 6
  • 7.
    CONCEPTOS BÁSICOS (CONT.) 7 Raíz hijo Hermano Padre hoja Subárbol Nivelde profundidad = 7 Grado de un nodo = 3 Grado del árbol = 3
  • 8.
    TIPOS DE ÁRBOLES Unárbol ordenado: Es aquel en el que las ramas de los nodos están ordenadas. • Los de grado 2 se llaman árboles binarios. • Cada árbol binario tiene un subárbol izquierda y subárbol derecha. 8 + - ^ 3.5 / B A D C
  • 9.
    TIPOS DE ÁRBOLES(CONT.) Árboles de expresión • Representan un orden de ejecución 9 + + * B A * E D C * + - 7 12 9 (A* B) + C * D + E (7 + 12) * (-9) → -171
  • 10.
    TIPOS DE ÁRBOLES(CONT.) • Árboles similares: Los que tienen la misma estructura (forma) • Árboles Equivalentes: Son los árboles similares y sus nodos contienen la misma información. • Árboles n-ario: Es un árbol ordenado cuyos nodos tiene N subárboles, y donde cualquier número de subárboles puede ser árboles vacíos 10 1 2 5 6 4 3 9 8 7 a b e f d c i h g
  • 11.
    TIPOS DE ÁRBOLES(CONT.) Árbol binario completo: • Es un árbol en el que todos sus nodos, excepto los del ultimo nivel, tienen dos hijos. • Número de nodos en un árbol binario completo = 2h –1 (en el ejemplo h = 4, → 15) esto nos ayuda a calcular el nivel de árbol necesario para almacenar los datos de una aplicación. 11
  • 12.
  • 13.
    ÁRBOLES BINARIOS DEBÚSQUEDA • Un árbol es un ABB si éste es binario y sus nodos son subárboles de búsqueda binarios y contienen información ordenada de tal que todos los elementos a la izquierda de la raíz son menores a la raíz y todos lo elementos a la derecha de la raíz son mayores a la raíz. 13
  • 14.
    CARACTERÍSTICAS DE UNABB • Todos los nodos a la izquierda son menores al padre. • Todos los nodos a la derecha son mayores al padre. • Y solo pueden tener 2 hijos a lo mucho. 14 50 95 90 110 110 88 85 100 105 102 68 34 40 45 26 42 8
  • 15.
    CONVERSIÓN DE UNÁRBOL GENERAL EN UN ÁRBOL BINARIO • Los hermanos se enlazan en forma horizontal (lineal) • Se enlaza en forma vertical el padre con el hijo que se encuentra mas a la izquierda y se elimina el enlace de este padre con los demás hijos. • Se rota el diagrama resultante 45 grados hacia la izquierda. 15
  • 16.
    CONVERSIÓN DE UNÁRBOL GENERAL EN UN ÁRBOL BINARIO (CONT.) 16 A B D C E F G H I J K L M N O A M B C D F E G I H K J O N L = queda así O A M B C D F E G I H K J N L
  • 17.
    REPRESENTACIÓN DE UNÁRBOL BINARIO EN LA MEMORIA. • Cada noto tiene la siguiente forma: 17 Raíz R A B C D E izq info der
  • 18.
    CLASE NODO DEUN ABB Class Nodo{ nodo izq; nodo der; int dato; } 18
  • 19.
    OPERACIONES SOBRE UNÁRBOL • Recorrer árbol • Preorden • Inorden • Postorden • Inserción nodo • Eliminar nodo • Buscar nodo con información • Sumar los nodos • Calcular profundidad del árbol • Contar nodos • Contar hojas. 19
  • 20.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) • Recorrido en preorden (prefijo) • Visita la raíz. • Recorre el subárbol izquierdo. • Recorre el subárbol derecho. 20 A B C D E F H I G RID Preorden = A B D G C E H I F
  • 21.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) (CONT.) PREORDEN (NODO) {NODO es un dato de tipo apuntador} {INFO, IZQ, DER son campos del registro} Si nodo != null entonces { Escribir NODO.INFO PREORDEN (NODO.IZQ) PREORDEN (NODO.DER) } 21
  • 22.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) (CONT.) • Recorrido en inorden (infijo) • Recorre el subárbol izquierdo. • Visita la raíz • Recorre el subárbol derecho. 22 A B C D E F H I G Inorden: D G B A H E I C F IRD
  • 23.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) (CONT.) INORDEN (NODO) {NODO es un apuntador a registro} Si NODO != null entonces { INORDEN (NODO.IZQ); Escribir NODO.INFO; INORDEN (NODO.DER); } 23
  • 24.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) (CONT.) • Recorrido en postorden (postfijo) • Recorre el subárbol izquierdo. • Recorre el subárbol derecho. • Visita la raíz. 24 A B C D E F H I G Postorden : G D B H I E F C A IDR
  • 25.
    RECORRIDOS DE UNÁRBOL DE BÚSQUEDA BINARIA (ABB) (CONT.) POSTORDEN (NODO) Si NODO != null entonces { POSTORDEN (NODO.IZQ); POSTORDEN (NODO.DER); Escribir NODO.INFO; } 25
  • 26.
    INSERCIÓN EN UNABB • La inserción es una operación que se puede realizar eficientemente en un árbol binario de búsqueda. La estructura crece conforme se inserten elementos al árbol. • Los pasos que deben realizarse para insertar un elemento a un ABB son los siguientes: • Debe compararse el valor o dato a insertar con la raíz del árbol. Si es mayor, debe avanzarse hacia el subárbol derecho. Si es menor, debe avanzarse hacia el subárbol izquierdo. 26
  • 27.
    INSERCIÓN EN UNABB (CONT.) • Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones • El subárbol derecho es igual a vació, o el subárbol izquierdo es igual a vació; en cuyo caso se procederá a insertar el elemento en el lugar que le corresponde. • El valor o dato que quiere insertarse es igual a la raíz del árbol; en cuyo caso no se realiza la inserción. 27
  • 28.
    INSERCIÓN EN UNABB (CONT.) Algoritmo Si NODO ≠ Null{ Si (INFOR < NODO.INFO) Regresar a INSERCION1 con NODO.IZQ e INFOR sino si ( INFOR > NODO.INFO) Regresar a INSERCION1 con NODO.DER e INFOR sino Escribir “El nodo ya se encuentra en el árbol” } // } si else CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO.IZQ = null, OTRO.DER = null, OTRO.INFO = INFOR y NODO = OTRO } 28
  • 29.
    INSERCIÓN EN UNABB (CONT.) • Supóngase que quieren insertarse las siguientes los siguientes datos en un árbol binario de búsqueda que se encuentra vació. 120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56 29
  • 30.
    INSERCIÓN EN UNABB (CONT.) SOLUCIÓN 120 –87 – 43 – 65 – 140 – 99 – 130 – 22 – 56 30 120 87 140 43 130 56 I 22 65 99
  • 31.
    ELIMINAR UN NODO Paraeliminar un nodo existen los siguientes casos: 1. Si el elemento a borrar es Terminal (hoja), 2. Si el elemento a borrar tiene un solo hijo, 3. Si el elemento a borrar tiene los dos hijo, 31
  • 32.
    ELIMINAR UN NODO(CONT.) • Caso 1 Si el elemento a borrar es terminal (hoja), simplemente se elimina. aux = aux.izq = null 32 Ejemplo eliminar nodo 7 8 1 9 7 6 8 1 9 7 6 8 1 9 6
  • 33.
    ELIMINAR UN NODO(CONT.) • Caso 2 Si el elemento a borrar tiene un solo hijo, entonces tiene que sustituirlo por el hijo 33 8 1 9 7 1 9 7 8 1 9 7 Ejemplo: eliminar nodo 8
  • 34.
    ELIMINAR UN NODO(CONT.) •Caso 3 Si el elemento a borrar tiene los dos hijos, entonces se tienen que sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho, o por el nodo que se encuentra mas a la derecha en el subárbol izquierdo. 34 Ejemplo: eliminar el 6 8 1 9 7 6 8 1 9 7 7 8 1 9 7
  • 35.
    ELIMINAR UN NODO(CONT.) si NODO !=null entonces si Dato < NODO.info Eliminación (NODO.izq, Dato) si no si dato > NODO.INFO entonces Eliminación (NODO.der, Dato si no otro = NODO si otro.der == null entonces NODO = otro.izq si no si otro.izq == null entonces NODO = otro.der 35
  • 36.
    ELIMINAR UN NODO(CONT.) Si no {aux = otro.izq aux1 = Aux while (aux.der != null ) aux1 = aux aux = aux.der } otro.info = aux.info otro = aux aux1.der = aux.izq quita (otro) (null) si no Escribir (‘el nodo no se encuentra en el árbol’) } 36
  • 37.
    ELIMINAR UN NODO(CONT.) • Elimina el 22,. 99, 87, 120, 140, 135, 56 37 93 87 43 99 120 130 140 65 56 22 135
  • 38.
    BUSCAR NODO CONINFORMACIÓN Si dato < NODO.info Si NODO.IZQ == null Escribir “El nodo no se encuentra en el árbol” Si no Búsqueda (NODO.izq,dato) Si no Si Dato > NODO.INFO entonces Si NODO.DER = null Escribir “No se encuentra” Si no Búsqueda (NODO.der,dato) Si no Escribir “El NODO se encuentra en el árbol” si nodo != null si Dato < NODO .INFO Búsqueda (Nodo.izq,Dato) si no si Dato > No dato.der Búsqueda (No dato.der,dato) si no escribir “El Dato se encuentra” Si no Escribir “El dato no se encuentra en el árbol” 38
  • 39.
    CONTAR NODOS //cuenta losnodos que hay en el árbol public static int nodo (nodo raiz){ if (raiz == null) return 0; else return (1+ Nodo( raiz.der) + Nodo( raiz.izq)) } 39
  • 40.
    SUMAR LOS NODOS //sumalos nodos que hay en el árbol public static int sumaNodo( nodo raiz){ if(raiz == null) return 0; else Return (sumaNodo (raiz.der) + sumaNodo (raiz.izq) ) } 40
  • 41.
    CALCULAR PROFUNDIDAD DELÁRBOL // calcula la profundidad de un árbol public int profundidad (Nodo raiz) { if (raiz == null) return 0; If (profundidad (raiz.der) > profundidad (raiz.izq)) return profundidad (raiz.der) + 1; else return profundidad( raiz.izq) + 1 } 41
  • 42.
    CONTAR HOJAS. // Cuentahojas de un árbol public int contarHojas (Nodo raiz) { if (raiz = = null) return 0; If ((raiz.der == null) && (raiz.izq == null)) Return 1; else return contarHojas (raiz.izq) + contarHojas (raiz.der) } 42
  • 43.
    LIGAS • Inserta eliminay busca en un árbol binario • http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html • http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20 applet.htm • Genera apartir de expresiones aritmeticas los árboles binarios • http://www.cs.jhu.edu/~goodrich/dsa/05trees/Demo1/ 43
  • 44.
    EJERCICIO Realiza la implementaciónde un árbol con sus funciones 44 • Recorrer árbol • Preorden • Inorden • Postorden • Inserción nodo • Eliminar nodo • Buscar nodo con información • Sumar los nodos • Calcular profundidad del árbol • Contar nodos • Contar hojas.