Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIÓN
• En las exposiciones pasadas pudimos
• INTRODUCCIÓN. observar los códigos de diferentes
• DEFINICIÓN. tipos de árboles, en los cuales a la hora
• EJEMPLOS. de realizar los recorridos se pierde
• IMPLEMENTACIONES. tiempo y memoria al indicar en el
• CONCLUSIONES.
CONCLUSIONES. recorrido que un subárbol se encuentra
vacío.
INTRODUCCIÓN DEFINICIÓN:
• En este tema se tratara de mostrar una
• Se define como el árbol binario que
mejor implementación de árboles
esta tanto a la derecha como a la
aprovechando ese espacio para
izquierda.
mantener un encadenamiento adicional
que permita a algunas operaciones • En otras palabras quiere decir que
propias de los árboles. Moverse con tienen apuntadores llamados hebras
mayor facilidad y tratar de usar menos que apuntan a sus sucesores y
memoria. antecesores respectivamente.
1
EJEMPLOS :
A Implementación de lo anterior.
A
B
B C struct nodetype {
D
C int info;
info;
E F
D
E F G H struct nodetype *lefth;
lefth;
G H I
I J K L
struct nodetype *right;
right;
int rthread;
rthread; /* campo extra */
}
p = q ->right;
right; Implementación para la creación de un árbol :
while(
while( q ->rthread && p != NULL)
NODEPTR crea_arbol (x)
{ {
printf (“%d\
(“%d\n”, p-
p->info); int x;
NODEPTR p;
q = p; p = GetNode ();
p = p-
p->right;
right; p->info = x;
} p->left = NULL;
p->rigth = NULL;
} p->rthread = TRUE;
}while(
while( q != NULL); return p;
} }
2
• setright(p,
setright(p, x)
• Setleft (p , x) NODEPTR p;
NODEPTR p; {
int x; int x;
{ NODEPTR q, r;
if (p == NULL) if(p == NULL)
error (“inserción no efectuada”); printf(“inserción
printf(“inserción no efectuada”);
else else if(!p
if(!p-->rthread)
rthread)
if(p ->left != NULL) printf(“iserción
printf(“iserción inválida”);
error (“inserción no válida”); else{
else{
else q = GetNode();
GetNode();
{ q->info = x;
q = getnode();
getnode(); r = p-
p->right;
right;
q->info = x; p->right = q;
p->left = q; p->rightread = FALSE;
q->left = NULL; q->left = NULL;
q->right = p; q->right = r;
q->tthread = TRUE; q->rthread = read = TRUE;
} }
} }
CONCLUSIONES
• Los árboles enhebrados se utilizan para el mejor
aprovechamiento de la memoria.
• Sus ventajas principales son:
• No se requiere el uso de pilas para el recorrido
de dichos árboles.
• El recorrido en orden puede hacerse de manera
iterativa. Por lo tanto no se necesita el uso de la
recursividad para realizar los recorridos.