16
ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE UAB – Ingeniería de Sistemas 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras multienlazadas. El árbol es una estructura de datos fundamental en informática, muy utilizada en todos sus campos, porque se adapta a la representación natural de informaciones homogéneas organizadas y de una gran comodidad y rapidez de manipulación. Esta estructura se encuentra en todos los dominios (campos) de la informática, desde la pura algorítmica (métodos de clasificación y búsqueda…) a la compilación (árboles sintácticos para representar las expresiones o producciones posibles de un lenguaje) o incluso los dominios de la inteligencia artificial (árboles de juegos, árboles de decisiones, de resolución, etc.) Las estructuras tipo árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos, como son árboles genealógicos, tablas, etc. Los árboles establecen una estructura jerárquica entre los objetos. Los árboles genealógicos y los organigramas son ejemplos comunes de árboles. Un árbol A es un conjunto finito de uno o más nodos, tales que: 1. Existe un nodo especial denominado RAIZ (v1) del árbol. 2. Los nodos restantes (v2, v3, …, vn) se dividen en m >= 0 conjuntos disjuntos denominado A1, A2, …, Am, cada uno de los cuales es, a su vez, un árbol. Estos árboles se llaman subárboles del RAIZ. La definición de árbol implica una estructura recursiva. Esto es, la definición del árbol se refiere a otros árboles. Un árbol con ningún nodo es un árbol nulo; no tiene raíz. Un árbol es una colección de elementos llamados nodos, uno de los cuales se distingue del resto como raíz, junto con una relación que impone una estructura jerárquica entre los nodos. Formalmente, un árbol se puede definir de manera recursiva como sigue: Definición: una estructura de árbol con tipo base T es: (i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial, llamado nodo raíz, y donde los restantes nodos están separados en n >= 0 conjuntos disjuntos, cada uno de los cuales es a su vez un árbol (llamados subárboles del nodo raíz). La definición implica que cada nodo del árbol es raíz de algún subárbol contenido en el árbol principal. El índice de un libro es un buen ejemplo de representación en forma de árbol.

TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

  • Upload
    others

  • View
    51

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 1

TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras multienlazadas.

El árbol es una estructura de datos fundamental en informática, muy utilizada en todos sus campos,

porque se adapta a la representación natural de informaciones homogéneas organizadas y de una

gran comodidad y rapidez de manipulación. Esta estructura se encuentra en todos los dominios

(campos) de la informática, desde la pura algorítmica (métodos de clasificación y búsqueda…) a la

compilación (árboles sintácticos para representar las expresiones o producciones posibles de un

lenguaje) o incluso los dominios de la inteligencia artificial (árboles de juegos, árboles de decisiones,

de resolución, etc.)

Las estructuras tipo árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos, como son árboles genealógicos, tablas, etc. Los árboles establecen una estructura jerárquica entre los objetos. Los árboles genealógicos y los organigramas son ejemplos comunes de árboles.

Un árbol A es un conjunto finito de uno o más nodos, tales que:

1. Existe un nodo especial denominado RAIZ (v1) del árbol.

2. Los nodos restantes (v2, v3, …, vn) se dividen en m >= 0 conjuntos disjuntos denominado A1,

A2, …, Am, cada uno de los cuales es, a su vez, un árbol. Estos árboles se llaman subárboles

del RAIZ.

La definición de árbol implica una estructura recursiva. Esto es, la definición del árbol se refiere a

otros árboles. Un árbol con ningún nodo es un árbol nulo; no tiene raíz.

Un árbol es una colección de elementos llamados nodos, uno de los cuales se distingue del resto como raíz, junto con una relación que impone una estructura jerárquica entre los nodos. Formalmente, un árbol se puede definir de manera recursiva como sigue:

Definición: una estructura de árbol con tipo base T es:

(i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial, llamado nodo raíz,

y donde los restantes nodos están separados en n >= 0 conjuntos disjuntos, cada uno de los cuales es a su vez un árbol (llamados subárboles del nodo raíz).

La definición implica que cada nodo del árbol es raíz de algún subárbol contenido en el árbol

principal. El índice de un libro es un buen ejemplo de representación en forma de árbol.

Page 2: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 2

La figura siguiente muestra un árbol en el que se ha rotulado cada nodo con una letra dentro de un

círculo. Esta es una notación típica para dibujar árboles.

Un árbol simple sin ordenar.

En este diagrama, el nodo con la etiqueta 7 tiene dos hijos, el 2 y el 6, y un padre, el 2. La raíz, al inicio, no tiene padre. En ciencias de la computación y en informática, un árbol es un tipo abstracto de datos (TAD) ampliamente usado que imita la estructura jerárquica de un árbol, con un valor en la raíz y subárboles con un nodo padre, representado como un conjunto de nodos enlazados. Una estructura de datos de árbol se puede definir de forma recursiva (localmente) como una colección de nodos (a partir de un nodo raíz), donde cada nodo es una estructura de datos con un valor, junto con una lista de referencias a los nodos (los hijos) , con la condición de que ninguna referencia esté duplicada ni que ningún nodo apunte a la raíz. Alternativamente, un árbol se puede definir de manera abstracta en su conjunto como un árbol ordenado, con un valor asignado a cada nodo. Ambas perspectivas son útiles: mientras que un árbol puede ser analizado matemáticamente, realmente es representado como una estructura de datos en la que se trabaja con cada nodo por separado (en lugar de como una lista de nodos y una lista de

Page 3: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 3

adyacencia entre nodos, como un grafo). Mirando a un árbol como conjunto, se puede hablar de el nodo padre de un nodo dado, pero en general se habla de una estructura de datos de un nodo dado que sólo contiene la lista de sus hijos sin referencia a su padre (si lo hay).

No es un árbol: Hay dos partes sin conectar (A→B y C→D→E), luego existe más de una raíz.

No es un árbol: En el ciclo 1-2-4-3, el 4 tiene más de un padre.

No es un árbol: En el ciclo B→C→E→D→B, B tiene más de un padre.

No es un árbol: En el ciclo A→A, A es la raíz, pero también tiene un padre.

Cada lista lineal es trivialmente un árbol

Un árbol es una estructura (posiblemente no lineal) de datos compuesta de nodos, vértices y aristas que es acíclica. Un árbol que no tiene ningún nodo se llama árbol vacío o nulo. Un árbol que no está vacío consta de un nodo raíz y potencialmente muchos niveles de nodos adicionales que forman una jerarquía.

Page 4: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 4

TERMINOLOGÍA Y REPRESENTACIÓN DE UN ÁRBOL GENERAL La representación y terminología de los árboles se realiza con las típicas notaciones de las relaciones

familiares en los árboles genealógicos: padre, hijo, hermano, ascendente, descendiente, etc. Sea el

árbol de la figura:

Las definiciones a tener en cuenta son:

• Raíz del árbol. Todos los árboles que no están vacíos tienen un único nodo raíz. Todos los demás

elementos o nodos se derivan o descienden de él. El nodo raíz no tiene padre, es decir, no es el

hijo de ningún elemento. Es el nodo superior de un árbol.

• Nodo, son los vértices o elementos del árbol. • Nodo terminal u hoja es aquel nodo que no contiene ningún subárbol (los nodos terminales u

hojas de la figura anterior son: E, F, K, L, H, I, J). Llamado menos comúnmente nodo externo o terminal): Un nodo sin hijos.

• A cada nodo que no es hoja se asocia uno o varios subárboles llamados descendientes o hijos. De igual forma, cada nodo tiene asociado un antecesor o ascendiente llamado padre. Un nodo conectado directamente con otro cuando se aleja de la raíz.

• Descendiente: Un nodo accesible por descenso repetido de padre a hijo.

• Ascendiente: Un nodo accesible por ascenso repetido de hijo a padre.

• Antecesores o Ancestrosde un nodo: todos los nodos del árbol en el camino que va desde la raíz del árbol hasta el nodo específico.

• Padre: La noción inversa de hijo.

• Los nodos hijos de un mismo padre se llaman hermanos. • Los nodos con uno o dos subárboles – no son hojas ni raíz – se llaman nodos interiores o

internos. Son nodos con al menos un hijo. • Grado: Número de subárboles de un nodo. • Grado de un nodo: es el número de subárboles que tienen como raíz ese nodo (cuelgan del

nodo). • Grado de un árbol: grado máximo de los nodos de un árbol. • Brazo: La conexión entre un nodo y otro.

Page 5: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 5

• Camino: Una secuencia de nodos y brazos conectados con un nodo descendiente. Es el enlace entre dos nodos consecutivos. Es la sucesión de nodos del árbol: n(1), n(2), .. n(k), tal que n(i) es el padre de n(i+1).

• Longitud de camino de un árbol: suma de las longitudes de los caminos a todos sus componentes.

• Rama es un camino que termina en una hoja • Nivel: El nivel de un nodo se define por 1 + (el número de conexiones entre el nodo y la raíz). • Altura de un nodo: La altura de un nodo es el número de aristas en el camino más largo entre

ese nodo y una hoja. • Altura de un árbol: La altura de un árbol es la altura de su nodo raíz. • Profundidad: La profundidad de un nodo es el número de aristas desde la raíz del árbol hasta

un nodo. • La altura o profundidad de un árbol es el número máximo de nodos de una rama. Equivale al

nivel más alto de los nodos más uno.

• Bosque: Un bosque es un conjunto de árboles n ≥ 0 disjuntos. Es una colección de dos o más

árboles.

• Todos los nodos tienen un solo padre – excepto el nodo raíz – que no tiene padre.

• Cada nodo tiene asociado un número de nivel que se determina por la longitud del camino

desde la raíz al nodo específico. Por ejemplo, en el árbol de la figura anterior:

Nivel 0 A

Nivel 1 B, C, D

Nivel 2 E, F, G, H, I, J

Nivel 3 K, L

• El peso de un árbol es el número de nodos terminales.

• Del árbol de la figura anterior, la altura es 4, y el peso es 7.

• Un nodo es una estructura que puede contener un valor o condición, o representar una estructura de datos separada (que puede llegar a ser un árbol). Cada nodo en un árbol tiene cero o más nodos hijo, que se disponen debajo de este en el árbol (por convenio, los árboles se dibujan de arriba a abajo). Un nodo que tiene un hijo se llama el nodo padre del hijo (o nodo superior). Todos los nodos tienen al menos un padre.

• Un nodo interno (también conocido como un nodo inferior o nodo rama) es cualquier nodo de un árbol que tiene nodos secundarios. De manera similar, un nodo externo(también conocido como un nodo exterior, nodo hoja, o nodo terminal) es cualquier nodo que no tiene nodos hijos.

• El nodo más alto en un árbol se llama el nodo raíz. Dependiendo de la definición, un árbol puede

ser obligado a tener un nodo raíz (en cuyo caso ningún árbol estaría vacío), o que se les permita

estar vacíos, en cuyo caso no necesariamente tienen un nodo raíz. Siendo el nodo superior, el

nodo raíz no tendrá un padre. Es el nodo en el que los algoritmos comienzan, ya que, como

estructura de datos que es, sólo se puede pasar de padres a hijos. Tenga en cuenta que algunos

algoritmos comienzan en la raíz, pero primero visitan a los nodos hoja (acceden al valor de los

nodos hoja), y acceden por último a la raíz (es decir, que acceden por primera vez a los hijos de

la raíz, pero sólo acceder al valor de la raíz como último paso). Todos los demás nodos pueden

ser accedidos siguiendo los brazos o enlaces. (En la definición formal, cada uno de esos caminos

es único.) En los diagramas, el nodo raíz se extrae convencionalmente en la parte superior. En

Page 6: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 6

algunos árboles, tales como los montículos, el nodo raíz tiene propiedades especiales. Cada

nodo en un árbol puede ser visto como el nodo raíz del subárbol con raíz en ese nodo.

Tipo de datos frente a la estructura de datos Hay una distinción entre un árbol como un tipo de datos abstracto y como una estructura concreta de datos, de forma análoga a la distinción entre una lista y lista enlazada. Como tipo de dato, un árbol tiene un valor e hijos, y los hijos son a su vez subárboles; el valor y los hijos de un árbol se interpreta como el valor del nodo raíz y los subárboles de los hijos del nodo raíz. Para permitir que los árboles finitos, hay que, o bien permitir que la lista de los hijos pueda estar vacía, o permitir que los árboles puedan estar vacíos, en cuyo caso la lista de los hijos pueden ser de tamaño fijo (factor de ramificación, especialmente 2 o binario), si se desea. Como una estructura de datos, un árbol vinculado es un grupo de nodos, donde cada nodo tiene un valor y una lista de referencias a otros nodos (sus hijos). Esta estructura de datos realmente define a un grafo dirigido,1 porque puede tener bucles o varias referencias al mismo nodo, del mismo modo que una lista enlazada. Luego también existe el requisito de que no hay dos referencias que apuntan al mismo nodo (que cada nodo tiene como máximo un solo padre, y de hecho todos lo tienen, a excepción de la raíz), y un árbol que viola esto es árbol corrupto. Debido al uso de referencias a los árboles en la estructura de datos de un árbol enlazado, a menudo se habla de árboles en los que implícitamente están siendo representados por referencias al nodo raíz, ya que esto es, normalmente, la forma en la que se aplican realmente. Por ejemplo, en lugar de un árbol vacío, uno puede tener una referencia nula: un árbol nunca está vacío, sino que una referencia a un árbol puede ser nula.

Definiciones

• En términos matemáticos, un árbol es cualquier conjunto de puntos, llamados vértices, y cualquier conjunto de pares de distintos vértices, llamados lados o ramas, tales que:

1. Hay una secuencia de ramas, llamada paso de cualquier vértice a cualquier otro vértice. 2. No hay lazos, o sea, que no hay pasos que comiencen en un vértice y puedan volver al

mismo vértice.

Llamaremos a un árbol de tal generalidad, un árbol libre.

• Los árboles que tienen un vértice o nodo especial, llamado raíz, reciben el nombre de árboles enraizados. La particularidad del nodo raíz es que no puede ser hijo de otro nodo.

• Un árbol A es un conjunto finito de uno o más nodos tales que : 1. Existe un nodo especialmente designado y denominado RAIZ(v1) del árbol. 2. Los nodos restantes (v2, v3, ..., vn) se dividen en m >= 0 conjuntos disjuntos

denominados A1, A2, ..., Am, cada uno de los cuales es a su vez, un árbol. Estos árboles se llaman subárboles del RAIZ. Observar la naturaleza recursiva de la definición de árbol.

• Un árbol es una estructura de datos no lineal. Las estructuras de datos lineales se caracterizan por que a cada elemento le corresponde no más que un elemento siguiente. En las estructuras de datos no lineales, como el árbol, un elemento puede tener diferentes "siguientes elementos", introduciendo una estructura de bifurcación, también conocidas como estructuras multi enlazadas.

Page 7: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 7

• Un árbol es un conjunto finito de elementos no vacío en el cual un elemento se denomina raíz y los restantes se dividen en m >= 0 subconjuntos separados, cada uno de los cuales es por sí mismo un árbol. Cada elemento en un árbol se denomina nodo del árbol.

• Un árbol ordenado se define como un árbol en el que los subárboles de cada nodo forman un conjunto ordenado. En un árbol ordenado podemos hablar del primero, segundo o último hijo de un nodo particular. El primer hijo de un nodo, en un árbol ordenado, se denomina con frecuencia el hijo más viejo de este nodo y el último hijo, se denomina el hijo más joven.

• Un árbol desordenado se define como un árbol en el que los subárboles de cada nodo no guardan orden alguno. No existe forma, en este tipo de árboles, determinar cual es el primero, segundo o último hijo.

• La estructura de datos árboles es para mostrar datos jerárquicos.

Usos

Veamos algunos ejemplos donde la estructura de datos árbol puede ser muy útil:

1. Los sistemas de archivos de los sistemas operativos, compuestos por jerarquías de directorios y archivos.

2. La jerarquía de clases en los lenguajes orientados a objetos.

La jerarquía de países, provincias, departamentos y municipios que organiza al poder político de una república. Matemáticamente Visto en su conjunto, una estructura de datos en árbol es un árbol ordenado, generalmente con valores unidos a cada nodo. Concretamente, es (si se requiere que no sea vacío): • Un árbol arraigado en dirección contraria a la raíz (un término más estrecho es

una arborescencia), significa: • Un grafo dirigido. • Cuyo grafo no dirigido subyacente es un árbol (dos vértices están conectados por exactamente

un camino simple). • Con una raíz destacada (un vértice se designa como la raíz). • Lo que determina la dirección en los brazos (flechas que apuntan fuera de la raíz; dado un brazo,

el nodo desde donde la flecha apunta se llama el padre y el nodo al que apunta se llama el hijo). Junto con:

• Una ordenación en los nodos hijos de un nodo dado, y un valor (de algún tipo de datos) en cada nodo.

A menudo, los árboles tienen un factor de ramificación de dos nodos hijo (posiblemente vacíos, por lo tanto, como máximo dos nodos secundarios no vacíos). En estos casos se habla de un árbol binario. Permitir árboles vacíos hace algunas definiciones simples un poco más complicadas: un árbol con raíz no debe estar vacío, por lo tanto, si a los árboles vacíos se le asigna la definición anterior, en su lugar se convierte en un árbol vacío, o un árbol arraigado de tal manera que .... Por otro lado, los árboles vacíos se simplifican definiendo un factor de ramificación fijo: con árboles vacíos, un árbol binario es un árbol de tal manera que cada nodo tiene exactamente dos hijos, cada uno de los cuales es un árbol (posiblemente vacío). Los conjuntos de operaciones en un árbol deben incluir la operación de tenedor.

Page 8: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 8

Enumeración de nodos

Necesidades

Muchas veces existe la necesidad de:

1. Encontrar un nodo en un árbol, cuando se ignora si existe o no el árbol. 2. Recuperar todos los nodos de un árbol.

Las soluciones a estas necesidades están regidas por la idea de transformar una estructura de datos

que es básicamente no lineal en una lineal. Obviamente esta linealidad se logra sin alterar la

estructura básica del árbol y visitando todos los nodos del árbol, una sola vez a cada uno, en las

formas básicas.

A continuación siguen las formas básicas de recorrer, navegar o enumerar los nodos de un árbol, las

que veremos a través del siguiente árbol, el que representa jerárquicamente, por ejemplo, las

ciudades donde una empresa tiene sus oficinas.

Page 9: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 9

Enumeraciones Básicas

A Lo Ancho (Breadth First)

Se usa el método Enumeration breadthFirstEnumeration().

En esta navegación se debe utilizar una estructura de datos auxiliar, como ser una lista, para identificar los nodos que ya han sido visitados.

Page 10: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 10

En Profundidad (Depth First)

Se usa el método Enumeration depthFirstEnumeration().

En este tipo de navegación no necesito de una estructura de datos auxiliar para navegar el árbol. Toda la información necesaria esta disponible en los nodos. El dibujo esta muy simplificado, ya que muestra una travesía a través de hermanos en forma directa, cuando en la realidad no hay un puntero que permite navegar de hermano a hermano. Lo que ocurre es que para ir al siguiente hermano se debe volver al padre y allí si seguir al siguiente hermano.

La imagen muestra de forma gráfica cuales son los nodos Raíz, Rama, Hoja.

Page 11: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 11

La imagen muestra de forma gráfica los nodos Padre, Hijo y Hermanos Los árboles ademas de los nodos tienen otras propiedades importantes que son utilizadas en diferente ámbitos los cuales son: Nivel: Nos referimos como nivel a cada generación dentro del árbol. Por ejemplo, cuando a un nodo hoja le agregamos un hijo, el nodo hoja pasa a ser un nodo rama pero ademas el árbol crece una generación por lo que el Árbol tiene un nivel mas. Cada generación tiene un número de Nivel distinto que las demas generaciones.

• Un árbol vacío tiene 0 niveles • El nivel de la Raíz es 1 • El nivel de cada nodo es calculado contando cuantos nodos existen sobre el, hasta llegar a

la raíz + 1, y de forma inversa también se podría, contar cuantos nodos existen desde la raíz hasta el nodo buscado + 1.

Altura: Le llamamos Altura al número máximo de niveles de un Árbol.

En la imagen se muestran los Niveles y la Altura de un Árbol.

Page 12: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 12

La altura es calculada mediante recursividad tomando el nivel mas grande de los dos sub-árboles de forma recursiva de la siguiente manera: altura = max(altura(hijo1), altura(hijo2),altura(hijoN)) + 1 Peso: Conocemos como peso al número de nodos que tiene un Árbol. Este factor es importante porque nos da una idea del tamaño del árbol y el tamaño en memoria que nos puede ocupar en tiempo de ejecución(Complejidad Espacial en análisis de algoritmos)

La imagen nos muestra como se calcula el peso de un Árbol, el cual es la suma de todos sus nodos, sin importar el orden en que sean contados. El peso se puede calcular mediante cualquier tipo de recorrido el cual valla contando los nodo a medida que avanza sobre la estructura. El peso es un árbol es igual a la suma del peso de los sub-árboles hijos + 1 peso = peso(hijo1) + peso(hijo2) + peso(hijoN)+ 1

Page 13: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 13

Orden: El Orden de un árbol es el número máximo de hijos que puede tener un Nodo.

Imagen que nuestra dos Árboles con Orden = 2(Izquierda) y un segundo con Orden = 3(Derecha). Notemos que un Árbol con Orden = 1 no tendría sentido ya que seria una estructura lineal. ya que cada nodo solo podría tener un Hijo. Este valor no lo calculamos, si no que ya lo debemos conocer cuando diseñamos nuestra estructura, ya que si queremos calcular esto lo que obtendremos es el grado. Grado: El grado se refiere al número mayor de hijos que tiene alguno de los nodos del Árbol y esta limitado por el Orden, ya que este indica el número máximo de hijos que puede tener un nodo.

En la imagen podemos apreciar un Árbol con grado 2(Izquierda) y un otro con grado 3(Derecha).

Page 14: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 14

El grado se calcula contando de forma recursiva el número de hijos de cada sub-árbol hijo y el numero de hijos del nodo actual para tomar el mayor, esta operación se hace de forma recursiva para recorrer todo el árbol. grado = max(contarHijos(hijo1),contarHijos(hijo2), contarHijos(hijoN). Sub-Árbol: Conocemos como Sub-Árbol a todo Árbol generado a partir de una sección determinada del Árbol, Por lo que podemos decir que un Árbol es un nodo Raíz con N Sub-Árboles.

En la imagen de puede apreciar que un Árbol esta compuesto por una serie de Sub-Arboles que conforman toda la estructura. Existen escenarios donde podemos sacar un Sub-Árbol del Árbol para procesarlo de forma separada, de esta forma el Sub-Árbol pasa a ser un Árbol independiente, También podemos eliminar Sub-Árboles completos, Agregarlos,entre otras operaciones. Árbol n-ario los arboles n-arios son aquellos arboles donde el número máximo de hijos por nodo es de N, en la figura anterior podemos apreciar dos árboles con grado 2 y grado 3, estos dos arboles también los podemos definir como Árbol n-ario con n = 2 y n=3 respectivamente.

Page 15: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 15

RESUMEN Un árbol se define como una colección de nodos organizados en forma recursiva. Cuando hay 0

nodos se dice que el árbol está vacío, en caso contrario el árbol consiste en un nodo denominado

raíz, el cual tiene 0 o más referencias a otros árboles, conocidos como subárboles. Las raíces de los

subárboles se denominan hijos de la raíz, y consecuentemente la raíz se denomina padre de las

raíces de sus subárboles. Una visión gráfica de esta definición recursiva se muestra en la siguiente

figura:

Los nodos que no poseen hijos se denominan hojas. Dos nodos que tienen el padre en común se

denominan hermanos.

Un camino entre un nodo n1 y un nodo nk está definido como la secuencia de nodos n1, n2, ..., nk tal

que ni es padre de ni+1, 1 <= i < k. El largo del camino es el número de referencias que componen el

camino, que para el ejemplo son k-1. Existe un camino desde cada nodo del árbol a sí mismo y es de

largo 0. Nótese que en un árbol existe un único camino desde la raíz hasta cualquier otro nodo del

árbol. A partir del concepto de camino se definen los conceptos de ancestro y descendiente: un nodo

n es ancestro de un nodo m si existe un camino desde n a m; un nodo n es descendiente de un nodo

m si existe un camino desde m a n.

Se define la profundidad del nodo nk como el largo del camino entre la raíz del arbol y el nodo nk.

Esto implica que la profundidad de la raíz es siempre 0. La altura de un nodo nk es el máximo largo

de camino desde nk hasta alguna hoja. Esto implica que la altura de toda hoja es 0. La altura de un

árbol es igual a la altura de la raíz, y tiene el mismo valor que la profundidad de la hoja más profunda.

La altura de un árbol vacío se define como -1.

La siguiente figura muestra un ejemplo de los conceptos previamente descritos:

Page 16: TEMA 1: La Estructura Arbol - TAD Arbol General no lineales · 1 TEMA 1: La Estructura Arbol - TAD Arbol General Son estructuras de datos no lineales, o también denominadas estructuras

ASIGNATURA: (TIS-106) Estructuras de Datos II NIVEL: DOCENTE: Ing. Freddy Melgar Algarañaz 6to. SEMESTRE

UAB – Ingeniería de Sistemas 16

• A es la raíz del árbol. • A es padre de B, C y D. • E y F son hermanos, puesto que ambos son hijos de B. • E, J, K, L, C, P, Q, H, N y O son las hojas del árbol. • El camino desde A a J es único, lo conforman los nodos A-B-F-J y es de largo 3. • D es ancestro de P, y por lo tanto P es descendiente de D. • L no es descendiente de C, puesto que no existe un camino desde C a L. • La profundidad de C es 1, de F es 2 y de Q es 4. • La altura de C es 0, de F es 1 y de D es 3. • La altura del árbol es 4 (largo del camino entre la raíz A y la hoja más profunda, P o Q).

Los árboles representan las estructuras no lineales y dinámicas de datos más importantes en

computación. Dinámicas porque las estructuras de árbol pueden cambiar durante la ejecución de

un programa. No lineales, puesto que a cada elemento del árbol pueden seguirle varios elementos.

Los árboles pueden ser construidos con estructuras estáticas y dinámicas. Las estáticas son arreglos,

registros y conjuntos, mientras que las dinámicas están representadas por listas.

La definición de árbol es la siguiente: es una estructura jerárquica aplicada sobre una colección de

elementos u objetos llamados nodos; uno de los cuales es conocido como raíz. Además se crea una

relación o parentesco entre los nodos dando lugar a términos como padre, hijo, hermano,

antecesor, sucesor, ancestro, etc.. Formalmente se define un árbol de tipo T como una estructura

homogénea que es la concatenación de un elemento de tipo T junto con un número finito de árboles

disjuntos, llamados subárboles. Una forma particular de árbol puede ser la estructura vacía.

La figura siguiente representa a un árbol general.

Se utiliza la recursión para definir un árbol porque representa la forma más apropiada y porque

además es una característica inherente de los mismos.

Los árboles tienen una gran variedad de aplicaciones. Por ejemplo, se pueden utilizar para

representar fórmulas matemáticas, para organizar adecuadamente la información, para construir

un árbol genealógico, para el análisis de circuitos eléctricos y para numerar los capítulos y

secciones de un libro.