Ayuda en un ejercicio de programación

Hola, esta semana nuestro profe nos ha mandado un ejercicio en pascal, concretamente un árbol con objetos con el siguiente enunciado:

5 puntos: árbol binario sin balanceo y con listados recursivos (mínimo inorden izquierda-derecha)(tiene que funcionar altas y bajas).

7 puntos:con listado no recursivo.

10 puntos:Si el árbol es AVL.

el árbol lo tengo hecho pero sin implementar objetos, me podríais hechar una mano? yo voy a por la opción de los 5 puntos
Gracias

Tengo lo siguiente:

program arbo;
Uses Crt;

Type Arbol = ^ Nodo;
Nodo = Record
Info: Integer;
Izq,Der: Arbol;
End;

Var A: Arbol;
N: Integer;
Opc: Char;

Procedure Insertar(Var A: Arbol; N: Integer);
Begin
If A = Nil Then
Begin
New(A);
A^.Info := N;
A^.Izq := Nil;
A^.Der := Nil;
End
Else
If N < A^.Info Then Insertar(A^.Izq,N)
Else Insertar(A^.Der,N);
End;

Procedure In_orden(A: Arbol);
Begin
If A <> Nil Then
Begin
In_Orden(A^.Izq);
WriteLn(A^.Info);
In_Orden(A^.Der);
End;
End;

Function Busqueda (A: Arbol; N: Integer): Boolean;
Begin
Busqueda:= False;
If A <> Nil Then
If A^.Info = N Then Busqueda:= True
Else
If N < A^.info Then Busqueda:= Busqueda(A^.Izq,N)
Else Busqueda:= Busqueda(A^.Der,N);
End;

Function Menor (A: Arbol): Integer;
Var I1: Integer;
Min: Integer;
Begin
Min:= A^.Info;
I1:= 0;
If (A^.Izq <> Nil) Then
Begin
I1:= Menor(A^.Izq);
If I1 < Min Then Min:= I1;
End;
If (A^.Der <> Nil) Then
Begin
I1:= Menor(A^.Der);
If I1 < Min Then Min:= I1;
End;
Menor:= Min;
End;

Procedure Eliminar(Var A: Arbol; N: Integer);

Procedure Borrar(Var A,Aux: Arbol);
Begin
If A^.Der <> Nil Then
Borrar(A^.Der,Aux) Else
Begin
Aux^.Info:= A^.Info;
Aux:= A;
A:= A^.izq;
End;
End;

Var Aux: Arbol;
Begin
If N < A^.Info Then Eliminar(A^.Izq,N) Else
If N > A^.Info Then Eliminar(A^.Der,N) Else
Begin
Aux:= A;
If Aux^.Der = Nil Then A:= Aux^.Izq
Else
If Aux^.Izq = Nil Then A:= Aux^.Der
Else Borrar(Aux^.Izq,Aux);
End;
End;

Begin
A:= Nil;
Repeat
ClrScr;
WriteLn('1- Agregar elemento al arbol');
WriteLn('2- Mostrar el arbol ordenado');
WriteLn('3- Saber si un n£mero est en el arbol');
WriteLn('4- Eliminar un elemento del arbol');
WriteLn('5- Obtener el menor elemento');
WriteLn('6- Salir');
write('Opci¢n: ');
Opc:= ReadKey;
If Opc = '1' Then
Begin
ClrScr;
Write('Ingrese un n£mero: ');
ReadLn(n);
Insertar(a,n);
End;
If Opc = '2' Then
Begin
ClrScr;
WriteLn('Estos son los elementos ordenados: ');
In_Orden(a);
WriteLn;
Write('Presione cualquier tecla para continuar...');
ReadKey;
End;
If Opc = '3' Then
Begin
ClrScr;
Write('Ingrese un n£mero: ');
ReadLn(n);
If Busqueda(a,n) Then WriteLn('El elemento est en el arbol.')
Else WriteLn('El elemento no est en el rbol.');
WriteLn;
Write('Presione cualquier tecla para continuar...');
ReadKey;
End;
If Opc = '4' Then
Begin
ClrScr;
Write('Ingrese el elemento a borrar: ');
ReadLn(n);
If Busqueda(a,n) Then
Begin
Eliminar(a,n);
WriteLn('El elemento fue eliminado.');
End Else WriteLn('El elemento no est en el arbol.');
WriteLn;
Write('Presione cualquier tecla para continuar...');
ReadKey;
End;
If Opc = '5' Then
Begin
ClrScr;
If A = Nil Then WriteLn('No hay elementos en el arbol.') Else
WriteLn('El menor es: ',Menor(A));
ReadKey;
End;
Until (Opc = '6');
End.


Muchas gracias!
Puf, en Pascal no te puedo ayudar, lo siento. Yo estoy aprendiendo ahora arboles binarios, pero en C++
Hace tiempo yo hice una estructura AVL, pero en python.
Te dejo un enlace donde puse el codigo.
[url]solocodigo.com/29027/estructura-avl/msg107044/#msg107044[/url]
muchas gracias a los 2 enserio, pero es que no entendí mucho los objetos y es lo que me falta... a ver si alguien me puede ayudar, muchas gracias!
Hola

Echa un ojo a este enlace a ver si te puede ayudar.

Salu2
4 respuestas