ARBOLES BINARIOS DE BSQUEDA: PARES CLAVEVALOR - PowerPoint PPT Presentation

1 / 12
About This Presentation
Title:

ARBOLES BINARIOS DE BSQUEDA: PARES CLAVEVALOR

Description:

ARBOLES BINARIOS DE B SQUEDA: PARES CLAVE-VALOR. template class TClave, class TValor ... Constructoras, destructora y operador de asignaci n. TArbus ... – PowerPoint PPT presentation

Number of Views:158
Avg rating:3.0/5.0
Slides: 13
Provided by: claramaria
Category:

less

Transcript and Presenter's Notes

Title: ARBOLES BINARIOS DE BSQUEDA: PARES CLAVEVALOR


1
ARBOLES BINARIOS DE BÚSQUEDA PARES CLAVE-VALOR
2
  • template ltclass TClave, class TValorgt
  • class TNodoArbus
  • private
  • TClave _clave
  • TValor _valor
  • TNodoArbusltTClave,TValorgt _iz, _dr
  • TNodoArbus( const TClave, const TValor,
  • TNodoArbusltTClave,TValorgt,
    TNodoArbusltTClave,TValorgt )
  • public
  • const TClave clave() const
  • const TValor valor() const
  • TNodoArbusltTClave,TValorgt iz() const
  • TNodoArbusltTClave,TValorgt dr() const
  • friend TArbusltTClave,TValorgt

3
  • template ltclass TClave, class TValorgt
  • class TArbus
  • public
  • // Constructoras, destructora y operador de
    asignación
  • TArbus( )
  • TArbus( const TArbusltTClave,TValorgt )
  • TArbus( )
  • TArbusltTClave,TValorgt operator( const
    TArbusltTClave,TValorgt )
  • // Operaciones de los árboles de búsqueda
  • void inserta( const TClave, const TValor
    )
  • // inserta un par (clave, valor),
  • // si la clave ya está, se sustituye el
    valor antiguo
  • void borra( const TClave )
  • // elimina un par (clave, valor) a partir de
    una clave dada,
  • // si la clave no está, el árbol no se
    modifica

4
  • const TValor consulta( const TClave )
    const throw (EClaveErronea)
  • // devuelve el valor asociado con la clave
    dada
  • // Lanza la excepción EClaveErronea si el
    árbol no contiene dicha clave
  • bool esta( const TClave ) const
  • // devuelve true false según si el árbol
    contiene o no la clave
  • bool esVacio( ) const
  • // Devuelve true false según si el árbol
    está o no vacío
  • // Escritura
  • void escribe( ostream salida ) const
  • private
  • // Variables privadas
  • TNodoArbusltTClave,TValorgt _ra

5
  • // Operaciones privadas
  • void libera()
  • static void TArbusltTClave,TValorgtliberaAux(
    TNodoArbusltTClave,TValorgt )
  • void copia( const TArbusltTClave,TValorgt )
  • static TNodoArbusltTClave,TValorgt copiaAux(
    TNodoArbusltTClave,TValorgt )
  • // operación privada de escritura
  • static void escribeAux( ostream,
    TNodoArbusltTClave,TValorgt , string )
  • // operaciones auxiliares para los algoritmos
    recursivos
  • static void insertaAux( const TClave, const
    TValor,

  • TNodoArbusltTClave,TValorgt )
  • static TNodoArbusltTClave,TValorgt busca(
    const TClave,

  • TNodoArbusltTClave,TValo
    rgt )
  • static void borraAux( const TClave,
    TNodoArbusltTClave,TValorgt )
  • static void borraRaiz( TNodoArbusltTClave,TVal
    orgt )
  • static void borraConMin( TNodoArbusltTClave,TV
    alorgt ,
  • TNodoArbusltTClave,TV
    alorgt )

6
  • template ltclass TClave, class TValorgt
  • TNodoArbusltTClave,TValorgtTNodoArbus( const
    TClave clave,
    const TValor valor, TNodoArbusltTClave,TValor
    gt iz 0,

  • TNodoArbusltTClave,TValorgt dr 0 )
  • _clave(clave), _valor(valor), _iz(iz),
    _dr(dr)
  • template ltclass TClave, class TValorgt
  • const TClave TNodoArbusltTClave,TValorgtclave
    () const
  • return _clave
  • template ltclass TClave, class TValorgt
  • const TValor TNodoArbusltTClave,TValorgtvalor
    () const
  • return _valor
  • template ltclass TClave, class TValorgt
  • TNodoArbusltTClave,TValorgt TNodoArbusltTClave,T
    Valorgtiz() const
  • return _iz
  • template ltclass TClave, class TValorgt
  • TNodoArbusltTClave,TValorgt TNodoArbusltTClave,T
    Valorgtdr() const

7
  • template ltclass TClave, class TValorgt
  • TArbusltTClave,TValorgtTArbus( )
  • _ra( 0 )
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtinserta( const
    TClave clave,
  • const
    TValor valor )
  • insertaAux( clave, valor, _ra )
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtinsertaAux(
    const TClave clave,
  • const TValor valor, TNodoArbusltTClave,T
    Valorgt p)
  • if ( p 0 )
  • p new TNodoArbusltTClave,TValorgt(
    clave, valor )
  • else if ( clave p-gtclave() )
  • p-gt_valor valor
  • else if ( clave lt p-gtclave( ) )
  • insertaAux( clave, valor, p-gt_iz )

8
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtborra( const
    TClave clave )
  • borraAux( clave, _ra )
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtborraAux( const
    TClave clave,

  • TNodoArbusltTClave,TValorgt p )
  • if ( p ! 0 )
  • if ( clave p-gtclave( ) )
  • borraRaiz(p)
  • else if ( clave lt p-gtclave( ) )
  • borraAux( clave, p-gt_iz )
  • else
  • borraAux( clave, p-gt_dr )

9
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtborraRaiz(
    TNodoArbusltTClave,TValorgt p )
  • TNodoArbusltTClave,TValorgt aux
  • if ( p-gtiz() 0 )
  • aux p
  • p p-gtdr()
  • delete aux
  • else if ( p-gtdr() 0 )
  • aux p
  • p p-gtiz()
  • delete aux
  • else
  • borraConMin( p, p-gt_dr )

10
  • template ltclass TClave, class TValorgt
  • void TArbusltTClave,TValorgtborraConMin(
    TNodoArbusltTClave,TValorgt p,
    TNodoArbusltTClave,TValorgt q )
  • TNodoArbusltTClave,TValorgt aux
  • if ( q-gtiz() ! 0 )
  • borraConMin( p, q-gt_iz )
  • else
  • p-gt_clave q-gtclave()
  • p-gt_valor q-gtvalor()
  • aux q
  • q q-gtdr()
  • delete aux

11
  • template ltclass TClave, class TValorgt
  • TNodoArbusltTClave,TValorgt
  • TArbusltTClave,TValorgtbusca( const TClave
    clave,

  • TNodoArbusltTClave,TValorgt p )
  • TNodoArbusltTClave,TValorgt r
  • if ( p 0 )
  • r 0
  • else if ( clave p-gtclave() )
  • r p
  • else if ( clave lt p-gtclave() )
  • r busca(clave, p-gtiz())
  • else if ( clave gt p-gtclave() )
  • r busca(clave, p-gtdr())
  • return r

12
  • template ltclass TClave, class TValorgt
  • const TValor TArbusltTClave,TValorgtconsulta
    ( const TClave clave ) const
  • throw (EClaveErronea)
  • TNodoArbusltTClave,TValorgt aux
  • aux busca(clave, _ra)
  • if ( aux 0 )
  • throw EClaveErronea( )
  • else
  • return aux-gtvalor()
  • template ltclass TClave, class TValorgt
  • bool TArbusltTClave,TValorgtesta( const
    TClave clave ) const
  • return busca(clave, _ra) ! 0
Write a Comment
User Comments (0)
About PowerShow.com