- PowerPoint PPT Presentation

About This Presentation
Title:

Description:

Estructuras de Datos MC Beatriz Beltr n Mart nez Aparecen estructuras de tipo rbol en: Sistemas Operativos: Sistema de ficheros ( rbol de directorios). – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 16
Provided by: Beatri65
Category:

less

Transcript and Presenter's Notes

Title:


1
árboles
  • Estructuras de Datos
  • MC Beatriz Beltrán Martínez

2
Introducción
  • Aparecen estructuras de tipo árbol en
  • Sistemas Operativos Sistema de ficheros (Árbol
    de directorios).
  • Compiladores, procesadores de textos, algoritmos
    de búsqueda.
  • Elementos
  • Nodos.
  • Conexiones (dirigidas) entre pares de nodos.
  • Un nodo particular Raíz.
  • Cada nodo (excepto raíz) está conectado al menos
    con otro (padre). Relación padre-hijo.

3
Conceptos
  • Un único camino conduce de la raíz a cada nodo.
  • Longitud del camino Número de conexiones a
    atravesar.
  • Nodos sin hijos Hojas (leaves).
  • Árbol con N nodos ó N-1 conexiones entre nodos.
  • Profundidad de un nodo
  • Longitud del camino raíz ð nodo.
  • Altura de un nodo
  • Longitud del camino desde el nodo a su hoja más
    profunda.
  • Hermanos Nodos con el mismo padre (siblings).

4
Conceptos
  • El grado de un nodo es el número de flechas que
    salen de ese nodo.
  • El grado de un árbol es el mayor de los grados
    que puede hallarse en el árbol.
  • Un camino de un nodo n1 a otro nk, se define como
    la secuencia de nodos n1, n2, ... nk tal que ni
    es padre de ni1 para 1 ? i lt k.
  • Longitud del camino entre 2 nodos, es el número
    de arcos que hay entre ellos.

5
Conceptos
  • Relación antepasado (u) / descendiente (v)
  • Si hay camino de u a v.
  • Tamaño de un nodo
  • Número de descendientes (incluyendo al nodo).
  • Árbol (definición recursiva)
  • o es vacío,
  • o consiste en una raíz y cero o más (sub)árboles
    no vacíos A1..Ak conectados a la raíz.

6
Implementación
  • 1. Cada nodo contiene
  • Referencias a todos sus hijos.
  • Datos almacenados en el nodo.
  • Problema Número de hijos desconocido.
  • 2. Cada nodo
  • Lista con sus hijos.
  • Referencia a los datos contenidos.
  • Referencia a su nodo hermano.
  • Representación "first child / next sibling.

7
Implementación
8
Árbol N-ario
  • Ningún nodo puede tener más de N hijos.
  • El más utilizado Binario, 2 hijos (left, right).
  • Definición recursiva (Árbol binario)
  • ... o es vacío.
  • ... o tiene raíz, árbol derecho, árbol izquierdo.
  • Implementación
  • Conocido el número de hijos. 2 referencias.

9
Árboles Binarios
  • Árbol binario lleno (full binary tree).
  • Todas las hojas tiene la misma profundidad.
  • El resto de nodos (no terminales) tienen 2 hijos.
  • Árbol binario completo (complete binary tree).
  • Cada nivel (excepto el más profundo) debe
    contener todos sus posibles nodos.
  • En el nivel más profundo, los nodos están lo más
    a la izquierda que sea posible.

10
Expresiones
  • Un nodo terminal representa un operando.
  • El resto de los nodos representan operadores
    (binarios).

6 ((7 - 3) 5)
Evaluación de la expresión Evaluación de los
subárboles (recursivamente). Aplicación del
operador a los valores obtenidos.
11
Recursividad
  • El tipo árbol se define recursivamente.
  • Muchas rutinas para manejo de árboles se
    implementan fácilmente de forma recursiva.
  • public class NodoBinario
  • Object dato
  • NodoBinario left
  • NodoBinario right
  • public NodoBinario (Object elemento)
  • dato elemento
  • left null right null
  • // Métodos...

12
Recorridos
  • Recorrido
  • Acceso a todos los nodos de un árbol
  • Ej Para realizar una operación en cada nodo
  • Fácil implementación mediante recursividad.
  • Tipos de recorrido
  • Según el orden en que se "visitan" los nodos.
  • Recorrido preorder.
  • Recorridos postorder.
  • Recorridos inorder.

13
Recorridos
  • Recorrido preorden
  • 1.- Nodo raíz
  • 2.- Subárbol left en preorden
  • 3.- Subárbol right en preorden

// en la clase NodoBinario... public void
mostrarPreorden() System.out.println(dato)
if (left ! null) left.mostrarPreorden()
if (right ! null) right.mostrarPreorden()
14
Recorridos
  • Recorrido inorden
  • 1.- Subárbol left en inorden
  • 2.- Nodo raíz
  • 3.- Subárbol right en inorden

// ...NodoBinario... public void
mostrarInorden() if (left ! null)
left.mostrarInorden() System.out.println(dato)
if (right ! null) right.mostrarInorden()

15
Recorridos
  • Recorrido postorden
  • 1.- Subárbol left en postorden
  • 2.- Subárbol right en postorden
  • 3.- Nodo raíz

// ...NodoBinario... public void
mostrarPostorden() if (left ! null)
left.mostrarPostorden() if (right ! null)
right.mostrarPostorden() System.out.println(dat
o)
Write a Comment
User Comments (0)
About PowerShow.com