Universidad Fermín ToroEscuela de Computación Estructuras de Datos IARBOLES         José Miguel Torres M   19.106.680     ...
¿Qué es un Árbol?Un árbol es una estructura jerárquica no lineal que posee un número deelementos finitos llamados nodos, p...
Características de un ÁrbolUn árbol se caracteriza por estar formado por una serie de nodos conectados poruna serie de ari...
Nodo Padre: es el nodo predecesor de 1 o más nodos.      Nodo Hijo: Es el nodo sucesor de un elemento.      Hermanos: Son ...
Subárbol: Son todos los nodos descendientes por la izquierda o derecha de un       padre.                                 ...
Grado: Es el número de descendientes directos de un nodo. El grado máximo detodos los nodos es el grado del árbol.Altura: ...
Árbol BinarioLos árboles binarios son los que tienen a lo más dos hijos por cada nodo. Un árbolbinario completo o balancea...
A                                 B                                        C                     D                        ...
A                               C                         B                    D                 E         F         G    ...
A                    C                                   B        D                       E               F       GH      ...
Representación mediante arreglos:Cuando se tiene los nodos etiquetados con enteros, es posible usar unarepresentación medi...
Representación en memoria dinámica: Los árboles se pueden representar enmemoria estática a través de estructuras arreglo. ...
Recorrer un árbol en preorden:Se debe comenzar por el nodo raíz.Recorrer el subárbol izquierdo en preorden.recorrer el sub...
Recorrido de un árbol en postorden:Recorrer el subárbol izquierdo en postorden.Recorrer el subárbol derecho en postorden.E...
Recorrido de un árbol en inorden:Recorrer el subárbol izquierdo en inorden.Examinar la raíz.Recorrer el subárbol derecho e...
Códigos en lenguaje c para crear, insertar un nodo y eliminar un nodo en un árbol.  En memoria DinamicaTYPETipoPuntero = ^...
Insertar nuevos elementos al ABB.Procedure Insertar_arbol_binario( var Raizarbol: TipoPuntero;InfoNodo: TipoInfo);VarNuevo...
Eliminar elementos ya existentes.(a)Eliminación de un nodo hoja sólo consiste en anular el puntero de su nodo padre(b)Elim...
Procedure SuprimirNodo (Var RaízArbol : Tipo_Puntero; ptr, anterior: Tipo_ Puntero);(* Suprime el nodo apuntado por Ptr so...
(* Copiar la información a reemplazar en el nodo*)ptr^.info:= temp^.info;if anterior = Ptr thenanterior^.izquierdo:= temp^...
else (* Caso b.2 Nodo con un hijo*)(* Inicializa uno de los campos punteros de nodo (anterior) dependiendo si el nodo que ...
Arboles
Arboles
Próxima SlideShare
Cargando en…5
×

Arboles

546 visualizaciones

Publicado el

Trabajo sobre conceptos, descripción,formas y recorridos de un árbol y arboles binarios.

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
546
En SlideShare
0
De insertados
0
Número de insertados
1
Acciones
Compartido
0
Descargas
12
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Arboles

  1. 1. Universidad Fermín ToroEscuela de Computación Estructuras de Datos IARBOLES José Miguel Torres M 19.106.680 Luis Miguel Henríquez S 20.913.021
  2. 2. ¿Qué es un Árbol?Un árbol es una estructura jerárquica no lineal que posee un número deelementos finitos llamados nodos, posee una relación padre – hijo entre susnodos.Se puede representar un árbol como el organigrama de una empresa. Poniendocomo raíz al presidente y desprendiendo de ahí los nodos padres, hijos y hojas delmismo. Forma de representar un Árbol MiEmpresa Ventas Producción Ve Internacional Portátiles Pc’s Europa Asia América
  3. 3. Características de un ÁrbolUn árbol se caracteriza por estar formado por una serie de nodos conectados poruna serie de aristas que verifican que:1. hay un único nodo raíz.2. cada nodo, excepto la raíz, tiene un único padre.3. hay un único camino (desde la raíz hasta cada nodo).Nodo: Cada elemento del árbol.Nodo RAIZ: El primer elemento del árbol no posee antecesores. A Nodo RAIZ B C D E F G H I
  4. 4. Nodo Padre: es el nodo predecesor de 1 o más nodos. Nodo Hijo: Es el nodo sucesor de un elemento. Hermanos: Son los nodos predecesores del mismo padre. A C: es padre de F y G B CD E F G H F y G son Hijos de C F y G son hermanos Nodo interno: Tiene al menos un hijo. Nodo Hojas: No tiene hijos. A D: Es un nodo interno B C D E F G H H: es un nodo hoja
  5. 5. Subárbol: Son todos los nodos descendientes por la izquierda o derecha de un padre. ASubárbol Izquierdo de B B C E D F G Subárbol derecho de B H Nivel:Es el largo del camino de la raíz al nodo. Cada vez que un nodo se ramifica aumenta el nivel. Nivel 0 A Nivel 1 B C Nivel 2 D E F G Nivel 3 H
  6. 6. Grado: Es el número de descendientes directos de un nodo. El grado máximo detodos los nodos es el grado del árbol.Altura: Son las capas que crecen a partir de la raíz. La altura de un árbol es laaltura de la raíz. A B C D E F G H I J K A B C D E F G H I J K
  7. 7. Árbol BinarioLos árboles binarios son los que tienen a lo más dos hijos por cada nodo. Un árbolbinario completo o balanceado es aquel en el cual todos los nodos tienen doshijos, salvo los que están en el último nivel. A B C D E F G H IArboles binarios distintos: Se dice que dos árboles binarios son distintos cuandosus estructuras son diferentes. A B C D E F G H I
  8. 8. A B C D E F G H I J K Árbol Binario SimilarDos árboles binarios son similares cuando sus estructuras son idénticas, pero lainformación que contienen sus nodos es diferente. A B C D E F G H I
  9. 9. A C B D E F G H I Árbol Binario EquivalenteSon aquellos árboles que son similares y que además los nodos contienen lamisma información:
  10. 10. A C B D E F GH I A C B D E F G H I
  11. 11. Representación mediante arreglos:Cuando se tiene los nodos etiquetados con enteros, es posible usar unarepresentación mediante arreglos unidimensionales A, en donde el índice irepresenta el valor del nodo i, y A(i) representa el valor del padre de i A(i) es el nodo padre del nodo i A(4)=B es el nodo padre del nodo D0 1 1 2 2 5 5 5 3 31 2 3 4 5 6 7 8 9 10
  12. 12. Representación en memoria dinámica: Los árboles se pueden representar enmemoria estática a través de estructuras arreglo. También se puede hacer através de estructuras dinámicas. Su representación es la siguiente: Ejemplo: Representar la expresión (A*B)+(C/D)^ 35 + * ^ A B / 35 C D
  13. 13. Recorrer un árbol en preorden:Se debe comenzar por el nodo raíz.Recorrer el subárbol izquierdo en preorden.recorrer el subárbol derecho en preorden.Pseudo código para hacer el recorrido en preordenPreordenComiencesi (t <> 0)entoncesImprima info (*t)preorden (Ni(*t))preorden (Nd(*t))Sinofin-siTermineRECORRIDO: A, B, D, C, E, G, H, F
  14. 14. Recorrido de un árbol en postorden:Recorrer el subárbol izquierdo en postorden.Recorrer el subárbol derecho en postorden.Examinar la raíz.Si(t<> 0) ejecuteposorden(ei(*t))posorden (ed(*t))imprima info (*t)Sinofin-siTermineRECORRIDO: D, B, G, H, E, F, C, A.
  15. 15. Recorrido de un árbol en inorden:Recorrer el subárbol izquierdo en inorden.Examinar la raíz.Recorrer el subárbol derecho en inorden.Pseudocodigo del recorrico inordensi (t <> ) entoncesinorden (Ni(*t))imprima info (*t)inorden (Nd(*t))Sinofin-siTermineRECORRIDO: D, B, A, G, E, H, C, F.
  16. 16. Códigos en lenguaje c para crear, insertar un nodo y eliminar un nodo en un árbol. En memoria DinamicaTYPETipoPuntero = ^TipoNodoABB;TipoNodoABB = RECORDinfo : TipoInfo;izquierdo : TipoPuntero;derecho: TipoPuntero;End;Crear un ABB vacío.Procedure InicializaArbol(var RaizArbol: TipoPuntero);BeginRaizArbol := NIL;
  17. 17. Insertar nuevos elementos al ABB.Procedure Insertar_arbol_binario( var Raizarbol: TipoPuntero;InfoNodo: TipoInfo);VarNuevoNodo: TipoPuntero; (*puntero para nodo nuevo*)Ptr, Anterior:TipoPuntero; (* usado para buscar en el ABB*)ClaveNueva: TipoClave;(* clave del nuevo nodo a insertar*)BEGIN(* Crear un nuevo nodo*)New(NuevoNodo); NuevoNodo^.izquierdo:= NIL; NuevoNodo^.derecho:= NIL;NuevoNodo^.info:= InfoNodo;(* Buscar el lugar de inserción*)ptr: = RaizArbol; Anterior: = NIL;While ptr <> NIL Dobeginanterior : = ptr;if ptr^.info.clave > ClaveNueva thenptr := ptr^.izquierdoelseptr := ptr^.derechoend;if anterior = NIL thenraizarbol = NuevoNodoelseif anterior^.info.clave > ClaveNueva thenanterior^.izquierdo: = Nuevonodoelseanterior^.derecho: = NuevonodoEND;
  18. 18. Eliminar elementos ya existentes.(a)Eliminación de un nodo hoja sólo consiste en anular el puntero de su nodo padre(b)Eliminación de un nodo con un hijo, es necesario reasignar el puntero del padre hacia el hijo.(c)Eliminación de un nodo con dos hijos : Reemplazar el nodo que deseamos suprimir con el nodo de valor más próximo alvalor del nodo suprimido. Así será posible hacer el reemplazo por "El mayor más cercano" o "El menor más cercano",dependiendo de qué subárbol sea escogido el nodo.Procedure Suprimir (Var RaizArbol: TipoPuntero;ValorClave: TipoClave);(* Suprime el valor que contiene ValorClave del árbol, apuntado por RaizArbol, supondremos que este nodo existe en elárbol*)Varptr, anterior: TipoPuntero;BEGINptr := RaizArbol; anterior:= NIL;While ptr ^.info.clave<> ValorClave Dobeginanterior : = ptr;if ptr^.info.clave > ValorClave thenptr := ptr^.izquierdoelseptr := ptr^.derechoend;(* Suprimir nodo apuntado por ptr*, anterior apunta al padre de este nodo*)SuprimirNodo(RaízArbol, ptr, Anterior)END;
  19. 19. Procedure SuprimirNodo (Var RaízArbol : Tipo_Puntero; ptr, anterior: Tipo_ Puntero);(* Suprime el nodo apuntado por Ptr sobre el árbol binario con puntero RaizArbol, Anterior es un puntero al nodopadre ( NIL si el nodo a suprimir es el nodo Raiz)*)Vartemp: Tipo_Puntero;BEGIN(*Caso b.1 Supresión de una hoja*)if(ptr^.derecho = NIL) AND (ptr^.izquierdo = NIL) thenIF Anterior = NIL then (*Nodo(ptr) es el último en el árbol)RaizArbol:= NILelseif anterior^.derecho = Ptr thenanterior^.derecho : = NILelse anterior^.izquierdo: = NILelse (* Caso b.3 supresión de nodo con dos hijos*)if(ptr^.derecho <> NIL) AND (ptr^.izquierdo <> NIL) thenbegin (* Encontrar el valor para reemplazar, valor más próximo al eliminado*)anterior: = ptr;temp := ptr^.izquierdo;While temp^.derecho<> NIL Dobeginanterior:= temp;temp : = temp^.derechoend;
  20. 20. (* Copiar la información a reemplazar en el nodo*)ptr^.info:= temp^.info;if anterior = Ptr thenanterior^.izquierdo:= temp^.izquierdoelseanterior^.derecho:= temp^.izquierdo;ptr:= temp;end
  21. 21. else (* Caso b.2 Nodo con un hijo*)(* Inicializa uno de los campos punteros de nodo (anterior) dependiendo si el nodo que se está suprimiendo tieneun hijo a la derecha o izquierda*)if ptr^.derecho <>NIL then (* Hay un hijo derecho*)if anterior = NIL thenRaizArbol:= Ptr^.derechoelseif anterior^.derecho=ptr thenanterior^.derecho := ptr^.derechoelseanterior^.izquierdo := ptr^.derechoelse(* hay un hijo izquierdo*)if anterior = NIL thenRaizArbol:= Ptr^.izquierdoelseif anterior^.derecho=ptr thenanterior^.derecho := ptr^.izquierdoelseanterior^.izquierdo := ptr^.izquierdo;dispose (ptr);END;

×