home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / DATABASE / XCLAS20D.ZIP / ARBOL.PRG < prev    next >
Encoding:
Text File  |  1993-03-23  |  1.8 KB  |  94 lines

  1. #include "xclass.ch"
  2.  
  3. CLASS ARBOL
  4. VAR Valor
  5. VAR Izq, Der
  6. CONSTRUCTOR New  METHOD ARBNew( x )
  7. MESSAGE PreEval  METHOD ARBPreEval( b )
  8. MESSAGE InEval   METHOD ARBInEval( b )
  9. MESSAGE PostEval METHOD ARBPostEval( b )
  10. MESSAGE Insert   METHOD ARBInsert( xVal )
  11. MESSAGE Existe   METHOD ARBExiste( xVal )
  12. MESSAGE Save     BLOCK  {|Self, cFichero| oSave( Self, cFichero ) }
  13. MESSAGE Load     METHOD ARBLoad( cFichero )
  14. END CLASS
  15.  
  16. METHOD ARBNew( xVal )
  17.    ::Valor := xVal
  18. RETURN Self
  19.  
  20. METHOD ARBPreEval( b )
  21.    eval( b, ::Valor )
  22.    if ::Izq != NIL
  23.       ::Izq:PreEval( b )
  24.    endif
  25.    if ::Der != NIL
  26.       ::Der:PreEval( b )
  27.    endif
  28. RETURN NIL
  29.  
  30. METHOD ARBInEval( b )
  31.    if ::Izq != NIL
  32.       ::Izq:InEval( b )
  33.    endif
  34.    eval( b, ::Valor )
  35.    if ::Der != NIL
  36.       ::Der:InEval( b )
  37.    endif
  38. RETURN NIL
  39.  
  40. METHOD ARBPostEval( b )
  41.    if ::Izq != NIL
  42.       ::Izq:PostEval( b )
  43.    endif
  44.    if ::Der != NIL
  45.       ::Der:PostEval( b )
  46.    endif
  47.    eval( b, ::Valor )
  48. RETURN NIL
  49.  
  50. METHOD ARBInsert( xVal )
  51.    if ::Valor == NIL
  52.       ::Valor := xVal
  53.    elseif xVal < ::Valor
  54.       if ::Izq == NIL
  55.          ::Izq := Arbol( xVal )
  56.       else
  57.          ::Izq:Insert( xVal )
  58.       endif
  59.    else
  60.       if ::Der == NIL
  61.          ::Der := Arbol( xVal )
  62.       else
  63.          ::Der:Insert( xVal )
  64.       endif
  65.    endif
  66. RETURN NIL
  67.  
  68. METHOD ARBExiste( xVal )
  69.    if ::Valor == xVal
  70.       RETURN .T.
  71.    elseif xval < ::Valor
  72.       if ::Izq == NIL
  73.          RETURN .f.
  74.       else
  75.          RETURN ::Izq:Existe( xVal )
  76.       endif
  77.    else
  78.       if ::Der == NIL
  79.          RETURN .f.
  80.       else
  81.          RETURN ::Der:Existe( xVal )
  82.       endif
  83.    endif
  84. RETURN NIL
  85.  
  86. METHOD ARBLoad( cFichero )
  87.    LOCAL o := oLoad( cFichero )
  88.    ::Valor := o:Valor
  89.    ::Izq   := o:Izq
  90.    ::Der   := o:Der
  91. RETURN NIL
  92.  
  93.  
  94.