Type tipo_bf = -1..+1; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;

Slides:



Advertisements
Presentaciones similares
IBD Curso 2007 Clase 2.
Advertisements

ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
5. Estructuras no lineales estáticas y dinámicas
Análisis Sintáctico Descendente
Diseño y análisis de algoritmos
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Generación de código intermedio II
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
Programación de Computadores
PROGRAMACION ESTRUCTURADA
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Animación de un Sistema de Puertas (código en GLIDER) NETWORK L (I)::IT:=1; Tipo:=((NUMBER-1) mod 4) + 1; SENDTO(P[Tipo]); P (G) [1..4]::STATE BEGIN IT:=5;
Círculos de proporción
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Estructuras de datos y algoritmos
Utilización de un TAD Arbol.
Diseño y análisis de algoritmos
Programación y Estructuras de Datos
Ingresar dos valores correspondientes a la edad de una persona. Informar "La primera persona es mayor", "La segunda persona es mayor". C E1 E2 E1>E2 Si.
Seminario de Actualización - Excel Avanzado y Macros
Realizado por: Ing. Mauricio Rivera1 Colas. Realizado por: Ing. Mauricio Rivera2 ¿Qué es una Cola? Una cola es un grupo ordenado de elementos homogéneos.
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Curso de Programación 1 Plan 97
Árboles binarios. Algoritmos básicos
Tema 4 Árboles. Árbol sobre matriz.
Algoritmos de Búsqueda
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Programación visual basic 2do año B Sofía Di Buccio Computadora número 36.
Programación Visual Basic
Cont. Arbol Binario de Búsqueda
Árboles balanceados AVL
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Programación Visual Basic Pedro Boualy y Fran B 2ºB PC:28.
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
Departamento de Informática Universidad Técnica Federico Santa María Tema 7: Subprogramas Programación de Computadores (IWI-131) Luis Pizarro Q.
LIGA VENEZOLANA DE BEISBOL MINIPROYECTO III Elaborado por: Carlos Rodríguez Bárbara Jaspe.
Arboles Binarios de expresiones
Clase 12 COMPUTACION 2009 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Estáticos Integer Real Char Boolean String Archivos Registros.
ÁRBOLES BINARIOS DE BÚSQUEDA
Coloración de Grafos Planos
1 Concurrencia Procesos y Programas. 2 Establecer Comunicación entre procesos (memoria común)
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
ARBOLES ESTRUCTURAS DE DATOS.
Estructuras de Datos Dinámicas: Listas Programación I Departamento de Informática Universidad Nacional de San Luis Argentina 2014.
Programación I Arreglos II- Matrices.
Forma de Trabajo 1- Comprender el problema 2- Estudiar todas las posibles situaciones 3- Plantear todas las estrategias posibles 4- Seleccionar la más.
Árboles AVL por Jorge Riera Ledesma Departamento de Estadística, Investigación Operativa Y Computación.
Árboles Binarios Estructuras de Datos.
Teoría – Alejandro Gonzalez
DRAGON BALL Sergio Pérez Camacho Matías Blanco León.
TABLAS DE DISPERSIÓN (HASH). TABLAS ENCADENADAS INDIRECTAS.
Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos.
Tema 6: Estructuras de Control
Departamento de Informática Universidad Técnica Federico Santa María Ejercicios Certamen 1: Programación de Computadores (IWI-131) Luis Pizarro Q.
Arboles B (búsqueda externa)
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Arboles Binarios.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Arboles Binarios: AVL (Adelson – Velskii - Landis)
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Backpatching. Lista de saltos de salida Todas las instrucciones tienen una lista de saltos de salida. Son instrucciones JMx a las cuales no se les ha.
Resolución de problemas y algoritmos
Estructuras de Control
Diego Hernández R. Archivos Diego Hernández R.
Transcripción de la presentación:

Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf; End; Clave

Procedure Buscar(d: tipo_dato; var p: tipo_puntero; var aumenta_alt: boolean; var ex: boolean); Var p1, p2: tipo_puntero; Begin If p = nil Then {La clave no está en el árbol->insertar} Begin New(p); aumenta_alt := true; ex := false; With p^ Do Begin dato := d; izquierdo := nil; derecho := nil; bf := 0; End; End Else […] Else Begin aumenta_alt := false; ex := true; End End; 5 7 Nil

R ID R I D R I D Else If d < p^.dato Then Begin Buscar(d, p^.izquierdo, aumenta_alt, ex); If aumenta_alt Then{El subárbol izquierdo ha crecido} Case p^.bf of +1:Begin {El peso se ha desplazado a la izquierda} p^.bf := 0; aumenta_alt := false; End; 0: p^.bf := -1; -1:Begin p1 := p^.izquierdo; If p1^.bf = -1 Then Begin { Rotacion II } […] End Else Begin { Doble Rotacion LR } […] End; aumenta_alt := false; End; { Del +1 } End; { Del case } End { Del If d < p^.dato}

p1 := p^.izquierdo; If p1^.bf = -1 Then Begin { Rotacion LL } p^.izquierdo := p1^.derecho; p1^.derecho := p; p^.bf := 0; p1^.bf := 0; p := p1 End

Else Begin { Rotacion LR } p2 := p1^.derecho; p1^.derecho := p2^.izquierdo; p2^.izquierdo := p1; p^.izquierdo := p2^.derecho; p2^.derecho := p; If p2^.bf = -1 Then p1^.bf := +1 Else p1^.bf := 0; If p2^.bf = +1 Then p^.bf := -1 Else p^.bf := 0; p2^.bf := 0; p := p2; End; p1 p2

B A Caso 1 -1:Begin p1 := p^.izquierdo; If p1^.bf = -1 Then […]

Caso 2 C A B 7 0 7

Begin { Del Procedimiento Borrar } If p = nil Then Begin Write('El dato ', d, ' no esta en el arbol'); dismin_alt := false; End Else If d < p^.dato Then Begin Borrar(d, p^.izquierdo, dismin_alt); If dismin_alt Then Equilibrar_Izquierdo(p, dismin_alt); End Else If d > p^.dato Then Begin Borrar(d, p^.derecho, dismin_alt); If dismin_alt Then Equilibrar_Derecho(p, dismin_alt); End Else ENCONTRADO!!!!! […] End; { Del Procedimiento Borrar}

Else {ENCONTRADO!!!!!} Begin q := p; If q^.derecho = nil Then Begin p := q^.izquierdo; dismin_alt := true; End Else If q^.izquierdo = nil Then Begin p := q^.derecho; dismin_alt := true; End Else Begin Bor(q^.izquierdo, dismin_alt); If dismin_alt Then Equilibrar_Izquierdo(p, dismin_alt); End; Dispose(q); End; End; { Del Procedimiento Borrar} El nodo borrado será reemplazado por el nodo del hijo izquierdo que se encuentre más a la derecha

Procedure Bor(var r: tipo_puntero; var dismin_alt: boolean); Begin If r^.derecho <> nil Then Begin Bor(r^.derecho, dismin_alt); If dismin_alt Then Equilibrar_Derecho(r, dismin_alt); End Else Begin p^.dato := r^.dato; q := r; r := r^.izquierdo; dismin_alt := true; End;

Procedure Equilibrar_Derecho(var p: tipo_puntero; var dismin_alt: boolean); Var p1, p2: tipo_puntero; e1, e2: tipo_bf; Begin Case p^.bf of +1: p^.bf := 0; 0:Begin p^.bf := -1; dismin_alt := false; End; -1: Begin p1 := p^.derecho; e1 := p1^.bf; If e1 <= 0 Then Begin { Rotacion RR } […] End Else Begin { Rotacion RL } […] End; End; { Del Procedimiento Equilibrar_Izquierdo }