home *** CD-ROM | disk | FTP | other *** search
- #include "xclass.ch"
-
- CLASS ARBOL
- VAR Valor
- VAR Izq, Der
- CONSTRUCTOR New METHOD ARBNew( x )
- MESSAGE PreEval METHOD ARBPreEval( b )
- MESSAGE InEval METHOD ARBInEval( b )
- MESSAGE PostEval METHOD ARBPostEval( b )
- MESSAGE Insert METHOD ARBInsert( xVal )
- MESSAGE Existe METHOD ARBExiste( xVal )
- MESSAGE Save BLOCK {|Self, cFichero| oSave( Self, cFichero ) }
- MESSAGE Load METHOD ARBLoad( cFichero )
- END CLASS
-
- METHOD ARBNew( xVal )
- ::Valor := xVal
- RETURN Self
-
- METHOD ARBPreEval( b )
- eval( b, ::Valor )
- if ::Izq != NIL
- ::Izq:PreEval( b )
- endif
- if ::Der != NIL
- ::Der:PreEval( b )
- endif
- RETURN NIL
-
- METHOD ARBInEval( b )
- if ::Izq != NIL
- ::Izq:InEval( b )
- endif
- eval( b, ::Valor )
- if ::Der != NIL
- ::Der:InEval( b )
- endif
- RETURN NIL
-
- METHOD ARBPostEval( b )
- if ::Izq != NIL
- ::Izq:PostEval( b )
- endif
- if ::Der != NIL
- ::Der:PostEval( b )
- endif
- eval( b, ::Valor )
- RETURN NIL
-
- METHOD ARBInsert( xVal )
- if ::Valor == NIL
- ::Valor := xVal
- elseif xVal < ::Valor
- if ::Izq == NIL
- ::Izq := Arbol( xVal )
- else
- ::Izq:Insert( xVal )
- endif
- else
- if ::Der == NIL
- ::Der := Arbol( xVal )
- else
- ::Der:Insert( xVal )
- endif
- endif
- RETURN NIL
-
- METHOD ARBExiste( xVal )
- if ::Valor == xVal
- RETURN .T.
- elseif xval < ::Valor
- if ::Izq == NIL
- RETURN .f.
- else
- RETURN ::Izq:Existe( xVal )
- endif
- else
- if ::Der == NIL
- RETURN .f.
- else
- RETURN ::Der:Existe( xVal )
- endif
- endif
- RETURN NIL
-
- METHOD ARBLoad( cFichero )
- LOCAL o := oLoad( cFichero )
- ::Valor := o:Valor
- ::Izq := o:Izq
- ::Der := o:Der
- RETURN NIL
-
-
-