ARBOLES 2013-Estructura de datos.pptx

download ARBOLES 2013-Estructura de datos.pptx

of 35

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.