Holas! bueno..con respecto a:
*el recorrido del arbol para formar una lista en forma descendente..deberias tener el arbol binario ordenado..los items del arbol deberian haberse insertado
ordenadamente..despues podrias recorrer el arbol INORDEN(descendente) y de cada visita mandas a un proceso insertar lista donde cada nodo que traigas lo vayas poniendo al final de la lista..
Código Delphi
[-]
procedure recorrer_inorden(A:arbolBin );
begin
if A <> nil ) then
begin
recorrer_inorden(A^.der);
insertarlista(A^.nodo);
recorrer_inorden(A^.izq);
end;
end;
..bueno algo asi..ja
*lo de los niveles..seria como un recorrido en amplitud creo.. consiste en encolar (si no están vacíos) los subárboles izquierdo y derecho del nodo extraido de la cola, y seguir desencolando y encolando hasta que la cola esté vacía. Es una idea nomas..es iterativo no recursivo..
Código Delphi
[-]
if (A <> nil) begin
CrearCola(cola);
encolar(cola, A);
while not(colaVacia(cola))begin
desencolar(cola, aux);
imprimir(aux);
if (aux^.izq <> nil) encolar(cola, aux^.izq);
if (aux^.der <> nil) encolar(cola, aux^.der);
end;
end;
algo asi tambien..
ahi tenes que fijarte como sacar el nro de nivel..pero creo que es facil no?
*Con respecto a la altura del arbol es la cantidad de niveles..que tiene bueno..con lo de arriba deberias darte cuenta..y en si tb lo podrias hacer recursivo..siempre quedandote con el nro..mayor recorriendo hacia la der e izq.
espero que te haya dado una idea..todo esto, de todas maneras las operaciones con arboles binarios no tienen demasiada complicacion..ya que solo tenemos 2 nodos! por nivel..al insertar deberias insertar ordenadamente..el problema de esto es que el arbol por lo gral queda desbalanceado..pero se pueden aplicar tecnicas de balanceo.
saludos!
LA PATRIA SERA LIBRE