Practica 8

4
Arboles binarios Un árbol es una estructura dinámica no lineal ; Se define como una estructura homogénea de tipo T con un número finito de árboles disjuntos llamados subárboles -las características de un árbol a) Todo árbol que no es vacío tiene un único nodo de raíz b) un nodo x es descendiente directo de un nodo Y “x es hijo de Y” c) un nodo x es un antecesor de un nodo Y “x es padre de y” d) todos los hijos descendientes de un solo nodo son hermanos c) todo nodo que no tiene nodos descendientes se denominan NODO DE HOJA o TERMINAL f) todo no que no es raíz ni terminal es un Nodo Interior g) GRADO es el NÚMERO de descendientes directos que tiene un nodo h) GRADO DEL ÁRBOL es el máximo grado de todos los nodos de árbol i) Nivel es el número de arcos que deben ser recorridos para llegar a un determinado nodo j) Altura del árbol es el máximo número de niveles de todo el nodo del árbol Árboles Binarios •Un árbol binario cada nodo puede tener como máximo dos subárboles y siempre es necesario distinguir entre el subárbol izquierdo y el subárbol derecho •Árbol binario tipo T es una estructura homogénea que es la concatenación de un elemento tipo T, llamado raíz, con dos árboles binarios disjuntos, llamados subárbol izquierdo y subárbol derecho. •Se pueden aplicar para representar un arbol genealógico o para representar expresiones algebraicas construidas con operadores binarios •Distintos. Cuando sus estructuras son diferentes •Similares. Cuando sus estructuras son idénticas pero la información que contiene cada árbol es diferente. •Equivalentes. Cuando son similares y además la información es idéntica entre los dos árboles. •Se dice que un árbol binario está lleno si es un árbol binario de profundidad k que tiene (2^k) - 1 nodos. Un árbol binario lleno es aquel que contiene el número máximo de posibles nodos. Como en estos casos no existen subárboles vacíos excepto para los nodos terminales. •Un árbol binario con n nodos y profundidad k se dice que es completo si y sólo si sus nodos se corresponden con los nodos numerados de 1 a n en el árbol binario lleno de profundidad k. Definimos un árbol binario completo (ABC) como un A .B .lleno pero con sus hojas dispuestas de tal manera que las hojas del nivel más bajo están situadas tan a la izquierda como sea posible.

description

practica arboles binarios

Transcript of Practica 8

  • Arboles binarios Un rbol es una estructura dinmica no lineal ; Se define como una estructura homognea de tipo T con un

    nmero finito de rboles disjuntos llamados subrboles

    -las caractersticas de un rbol

    a) Todo rbol que no es vaco tiene un nico nodo de raz

    b) un nodo x es descendiente directo de un nodo Y x es hijo de Y

    c) un nodo x es un antecesor de un nodo Y

    x es padre de y

    d) todos los hijos descendientes de un solo nodo son hermanos

    c) todo nodo que no tiene nodos descendientes se denominan NODO DE HOJA o TERMINAL

    f) todo no que no es raz ni terminal es un Nodo Interior

    g) GRADO es el NMERO de descendientes directos que tiene un nodo

    h) GRADO DEL RBOL es el mximo grado de todos los nodos de rbol

    i) Nivel es el nmero de arcos que deben ser recorridos para llegar a un determinado nodo

    j) Altura del rbol es el mximo nmero de niveles de todo el nodo del rbol

    rboles Binarios

    Un rbol binario cada nodo puede tener como mximo dos subrboles y siempre es necesario distinguir entre

    el subrbol izquierdo y el subrbol derecho

    rbol binario tipo T es una estructura homognea que es la concatenacin de un elemento tipo T, llamado raz,

    con dos rboles binarios disjuntos, llamados subrbol izquierdo y subrbol derecho.

    Se pueden aplicar para representar un arbol genealgico o para representar expresiones algebraicas

    construidas con operadores binarios

    Distintos. Cuando sus estructuras son diferentes

    Similares. Cuando sus estructuras son idnticas pero la informacin que contiene cada rbol es diferente.

    Equivalentes. Cuando son similares y adems la informacin es idntica entre los dos rboles.

    Se dice que un rbol binario est lleno si es un rbol binario de profundidad k que tiene (2^k) - 1 nodos. Un

    rbol binario lleno es aquel que contiene el nmero mximo de posibles nodos. Como en estos casos no existen

    subrboles vacos excepto para los nodos terminales.

    Un rbol binario con n nodos y profundidad k se dice que es completo si y slo si sus nodos se corresponden

    con los nodos numerados de 1 a n en el rbol binario lleno de profundidad k. Definimos un rbol binario

    completo (ABC) como un A .B .lleno pero con sus hojas dispuestas de tal manera que las hojas del nivel ms bajo

    estn situadas tan a la izquierda como sea posible.

  • Recorridos sistemticos. Una de las operaciones ms importantes que se realiza en un rbol binario es el recorrido de los mismos. Recorrer

    significa visitar los nodos del rbol en forma ordenada, de tal manera que todos los nodos del mismo sean

    visitados una sola vez. Existen tres formas diferentes de efectuar el recorrido y todas Ellas de naturaleza recursiva;

    estas son: a) Recorrido en preorden

    Visitar la raz

    Recorrer el subrbol izquierdo

    Recorrer el subrbol derecho b) Recorrido en inorden

    Recorrer el subrbol izquierdo

    Visitar la raz

    Recorrer el subrbol derecho

    c) Recorrido en Posorden

    Recorrer el subrbol izquierdo

    Recorrer el subrbol derecho

    Visitar la raz

    Procedimiento Comenc creando la clase nodo que define un nodo como un tipo de dato que contiene 1 dato y sus

    respectivas 2 conexiones (izquierda y derecha)

    Despus se comenz definir la clase rbol Binario en la cual damos los parmetros iniciales como establecer la

    raz del rbol a nulo y definir los mtodos de escritura

    Mtodos de recorrido en mi caso defin 3 metodos de recorrido los cules son

    recursivos

    public void RPreOrden(Nodo raiz) { if (raiz == null) { return; } System.out.println(raiz.getValor()); RPreOrden(raiz.getIzquierda()); RPreOrden(raiz.getDerecha()); }

    public void RInOrden(Nodo raiz) { if (raiz == null) { return; } RInOrden(raiz.getIzquierda()); System.out.println(raiz.getValor()); RInOrden(raiz.getDerecha()); }

    public void RPosOrden(Nodo raiz){ if (raiz == null) { return; } RPosOrden(raiz.getIzquierda()); RPosOrden(raiz.getDerecha());

    System.out.println(raiz.getValor()); }

  • Ejemplo de ejecucin Un ejemplo de ejecucin del programa son los 2 siguientes el primero es creando un rbol con nmeros

    Donde el rbol quedara de la siguiente forma

    De acuerdo a los datos introducidos por teclado

    Recorrido en pre orden Recorrido Inorden Recorrido Pos orden

  • ARBOL DE STRINGS

    Recorrido en pre orden Recorrido Inorden Recorrido Pos orden