ARBOLES 2013-Estructura de datos.pptx
Transcript of ARBOLES 2013-Estructura de datos.pptx
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
1/35
La estructura de datos: rbol
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
2/35
NDICE DE CONTENIDOS
Concepto de rbol Terminologa bsica Operaciones tipicas rboles binarios
rboles binariosPropiedadesOperaciones del TAD
RecorridosIn-ordenPre-ordenPost-orden
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
3/35
Concepto de rbol
Estructura JERRQUICAno lineal Relaciones padre-hijo entre nodos Ejemplos: sistema de ficheros, estructura de un
libro, diagrama de clases JAVA, diagramaorganizativo... MiEmpresa
Ventas I+DProduccin
Porttiles SobremesaES Internacional
Europa Asia Amrica
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
4/35
Concepto de rbol
Un rbol se caracteriza por estar formado poruna serie de nodos conectados por una serie dearistas que verifican que:
hay un nico nodo razcada nodo, excepto la raz, tienen un nicopadre
hay un nico camino (desde la raz hasta cadanodo)
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
5/35
Terminologa bsica
A
B DC
G HE F
I J K
Raz: nico nodo sin padre Nodo interno: tiene al
menos un hijo Nodo hoja (externo): no
tiene hijos Descendiente directo:
hijo Descendientes: hijo,
nieto... Subrbol: rbol formado
por un nodo y susdescendientes
subrbol
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
6/35
Terminologa bsica
Grado de un nodo: nmero dedescendientes directos
Grado del rbol: mayor grado de sus nodos rbol binario: rbol de grado 2 (ningun
nodo con mas de 2 hijos)Cada nodo tiene como mucho dos descendientesdirectos
rbol multicamino: rbol de grado mayorque 2Cada nodo puede tener n descendientes directos
Lista= rbol degenerado de grado 1
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
7/35
Terminologa bsica
Profundidad de un nodo: nmero depredecesores
Altura del rbol: profundidad mxima decualquier nodo
A
B DC
G HE F
I J K
profundidad(A)=0profundidad(H)=2altura=3
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
8/35
Terminologa bsica
Camino: existe un caminodel nodo X al nodo Y, siexiste una sucesin denodos que permitan llegar
desde X a Y.camino(A,K)={A,B,F,K}
camino(C,K)={}
A
B DC
G HE F
I J K
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
9/35
Operaciones tpicas
Buscar un elemento Dado un nodo, listar los hijos
Borrar un elemento Eliminar un subrbol (podar ) Aadir un subrbol (injertar ) Encontrar la raz de cualquier nodo Enumerar todos los elementos
Laboratorio DEI 2002/03 Estructura de Datos rboles - 9
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
10/35
rbol binario
Es un rbol de grado 2 Cada nodo tiene de 0 a 2 descendientes
directos: el hijo izquierdo y el derecho
A
B C
F GD E
H I
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
11/35
rbol binario
Aplicacin: expresiones aritmticas, rbolesde decisin, bsqueda (ABB) En algunos casos se exige que el rbol sea
completo= todo nodo interno tiene dos
descendientes.rbol binario completo rbol binario no completo
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
12/35
rbol binario
Ejemplo: expresiones aritmticasnodo interno: operadoresnodos hoja: operandos
2(a-1)+3b expresion matematica2*(a-1) + 3*b expresion computacional
+
-2
a 1
3 b
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
13/35
rbol binario
Ejemplo de aplicacin: rboles de decisinnodo interno: preguntas con respuesta si/nonodos hoja: decisiones
Dnde cenamos?
Cmida rpida?
Con caf? Cara?
Starbucks McDonalds Zalacan VIPS
S No
S No S No
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
14/35
rbol binario: propiedades
Notacinn: nmero de nodose: nmero de nodos hojai: nmero de nodosinternos
h: altura del rbol
Propiedadese 2hhi 2h-1log2(n+1)-1 h (n-1)/2
2h+1 n 2h+1-1
Si es completo:
eh+1
e=i+1
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
15/35
rbol binario: operaciones
asignarInfo(referenciaNodo, valorInformacion)
asignarIzq(referenciaNodo, valorEnlace)
asignarDer(referenciaNodo, valorEnlace
Modificacin de los nodos
info(referenciaNodo) Informacion
izq(referenciaNodo) enlaceder(referenciaNodo) enlace
eshoja(referenciaNodo) Booleano
Acceso a los nodos
recorrer(nombreArbol,tipoRecorrido)Recorrido del rbol
buscar(nombreArbol, dato) informacion
buscar(nombreArbol, informacin)referenciaNodo
borrar(nombreArbol, valorInfo)Borrado de nodos
insertar(padre, valorInfo, posicion)
arbolVacio(nombreArbol) BooleanoComprobacin del estado
crearArbol (nombreArbol)Creacin de un rbol
Insercin de nodos
Bsqueda de un nodo
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
16/35
rbol binario: recorridos
Hay tres tipos de recorrido en un rbolbinario
in-Orden
pre-Orden
post-Orden
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
17/35
rbol binario: recorridos
Recorrido IN-ORDENcada nodo se visita tras visitar su subrbolizquierdo y antes de visitar el derecho
(izq, raiz, der)
Ejemplo:
h
i
e
m
a
in-orden: (i, e, h, a, m)
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
18/35
rbol binario: recorridos
Recorrido PRE-ORDENcada nodo se visita antes de visitar su subrbolizquierdo y antes de visitar el derecho
(raiz, izq, der)
Ejemplo:
h
i
e
m
a
in-orden: (h, i, e, m, a)
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
19/35
rbol binario: recorridos
Recorrido POST-ORDENcada nodo se visita despus de visitar su subrbolizquierdo y despus de visitar el derecho
(izq, der, raiz)
Ejemplo:
h
i
e
m
a
post-orden: (e, i, a, m, h)
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
20/35
rbol binario: recorridos
Procesamiento de Expresiones
Una manera de procesar expresiones
aritmticas en un computador es usando unrbol de expresiones.
Definicin:Un rbol de expresin es un rbol binario compuesto
por nodos que contienen dos tipos de objetos:operadoresy valores terminales.
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
21/35
Tipos de rboles binarios
Arboles binarios equilibrados:|Altura subrbol izquierda altura subrbol derecha |
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
22/35
Tipos de rboles
binarios
Laboratorio DEI 2002/03 Estructura de Datos rboles - 22
rbol binario no equilibrado
head
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
23/35
Tipos de rboles binarios
Laboratorio DEI 2002/03 Estructura de Datos rboles - 23
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
24/35
Ejemplo de recorrido de AB
Ejemplo: Recorridos en las expresionesaritmticas pre-orden: notacin prefija (polaca) in-orden: notacin normal (sin parntesis)
post-orden: notacin polaca inversa+
-2
a 1
3 b
pre-orden: + x 2 - a 1 x 3 bin-orden: 2 x a - 1 + 3 x bpost-orden: 2 a 1 - x 3 b x +
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
25/35
A
E
B
H F
C
DG
Inorden; (HGBADCEF)
Preorden: (ABGHCDEF)
Postorden: (HGBDFECA)
Numero nodos =8;
Nodo Raz = A
Nodos terminales = H-F-D
Numero niveles = 4
Camino(A,H)={A,B,G,H}
camino(C,G)={}
profundidad(A)=0
profundidad(G)=2
altura=3
Ejemplo 1.
Nodo Grado
A 2
B 1
C 2
D 0
E 1
F 0
G 1
H 0
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
26/35
-
+
*
/ /
9Z *
*
*5
X Y
S T 3 Z
Inorden: 9/Z+5*T/3*Z-5*X*Y
Preorden: +/9Z/*5T*3Z*5*XY
Postorden: 9Z/5T*3Z*/5XY**-
Ejercicio de ejemplo:
Dada la siguiente expresin matemtica 9/Z+5T/3Z-5XY Represntela enun rbol binario y obtenga sus recorridos.
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
27/35
Ejercicios :
Dadas las siguientes expresiones matemticasa) (4(X^2)/Y+(3+5Y)/3X)^2 (^ elevado)
b) 2X+5Y-4Z+Z-P/4
Represntelas en un rbol binario y obtenga susrecorridos.
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
28/35
Arreglos en forma en forma esttica Sea L un arreglo lineal, en
la cual cada entrada L[i]constituya un apuntador oun cursor al padre delnodo I.
La raz de A se distingue
como un apuntador anulo.
1
2
4
3
5 9
6 7 8
10
1 2 3 4 5 6 7 8 9 10
A 0 1 1 2 2 5 5 5 3 3
Representacin de
rbol no binario
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
29/35
struct nodo{int padre;int info;
int izq;Int der;};nodo arbol[20]; // rbol
int head;
Declaracin estructura de un rbol.( asignacin esttica de memoria uso Arreglos)
La variable Head indica la direccin de la raz del rbol
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
30/35
struct nodo{nodo *padre;int info;nodo *izq;nodo *der;};nodo*nuevo,*head,*ptr,*anterior;
Declaracin estructura de un rbol.( asignacin dinmica de memoria uso punteros)
Punteros *nuevo, *ptr, *anterior son necesarios para eluso de procedimiento para trabajar con rbol en elprograma que se muestra a continuacin.
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
31/35
void ingresadatos(){clrscr();
printf("ingreso de informacin al nodo \n");printf("\n Numero: ");
scanf("%d",&dato);}
Funcin que recibe valor entero y lo guarda en
variable dato
// son variables que usaremos para ingresar datosint clavenueva;int dato,op
Mdulos de programa para ingresar datos yrecorrer un rbol binario (con uso puntero)
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
32/35
void ingresar(){
nuevo=new nodo;nuevo->izq=NULL;nuevo->der=NULL;nuevo->info=dato;clavenueva=dato;/* busca lugar insercion */
ptr=head;anterior=NULL;while (ptr!=NULL){anterior=ptr;if (ptr->info>clavenueva)
ptr=ptr->izq;elseptr=ptr->der;
};
Funcin que permite ingresar un nodo al rbol.
if (anterior==NULL){
printf("\n Se crea el arbol con nodo raiz\n");nuevo->padre=NULL;head=nuevo;}
elseif (anterior->info > clavenueva){
anterior->izq=nuevo;nuevo->padre=anterior;}
else{anterior->der=nuevo;nuevo->padre=anterior
}
F i d R id
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
33/35
voidinorden(nodo *tree){
if (tree!=NULL){inorden(tree->izq);printf("\n dir= %d izq:%d infor:%d der: %d",tree,tree->izq,tree-
>info,tree->der);inorden(tree->der);}
}
void preorden(nodo *tree){
if (tree!=NULL){
printf("\n dir= %d izq:%d infor:%d der: %d",tree,tree->izq,tree->info,tree->der);preorden(tree->izq);preorden(tree->der);
}}
Funciones de Recorridos
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
34/35
void postorden(nodo *tree){
if (tree!=NULL){
postorden(tree->izq);postorden(tree->der);printf("\n dir= %d izq:%d infor:%d der: %d",tree,tree-
>izq,tree->info,tree->der);
}
}
void main()
-
5/23/2018 ARBOLES 2013-Estructura de datos.pptx
35/35
void main(){do {clrscr();
//printf("1. crear el arbol\n");
printf("1. Ingresar nodo al arbol\n");printf("2. Buscar en Inorden\n");printf("3. Buscar en Preorden\n");printf("4. Buscar en Postorden\n");printf("0. Fin\n");printf("\n");
printf("Ingresa Opcin: ");scanf("%d",&op);switch(op){//case 1:{crear(); break;}case 1:{ingresadatos();ingresar(); break;}
case 2:{inorden(head);getch(); break;}case 3:{preorden(head);getch(); break;}case 4:{postorden(head);getch(); break;}
}}
while(op!=0);
Modulo
principal, dellamadas a lafuncin deinsertar nodo
y a lasfunciones derecorridos.