
Problema árbol binario
Publicado por Diego (98 intervenciones) el 02/10/2013 00:46:42
Buenas noches, tengo un problema, no se bien como utilizar una estructura arbol para generar otro arbol con un criterio diferente.
Osea, tengo un arbol binario de búsqueda, los mayores a la derecha, y los menores a la izquierda.
El problema es el siguiente:
Dado un árbol binario de números enteros, genere otro ordenado con los valores impares, tal que el
hijo izquierdo sea mayor que la raíz, y el hijo derecho sea menor que la misma.
-----Para agregar un nodo nuevo en el criterio que pide solo bastaria con copiar el proceso agregar_nodo y cambiar izq con der. pero el problema que me suege es como le envio ese número al proceso.
Espero noticias, de como resolver este problema
Osea, tengo un arbol binario de búsqueda, los mayores a la derecha, y los menores a la izquierda.
El problema es el siguiente:
Dado un árbol binario de números enteros, genere otro ordenado con los valores impares, tal que el
hijo izquierdo sea mayor que la raíz, y el hijo derecho sea menor que la misma.
-----Para agregar un nodo nuevo en el criterio que pide solo bastaria con copiar el proceso agregar_nodo y cambiar izq con der. pero el problema que me suege es como le envio ese número al proceso.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
program ejericicio2;
type
arbol =^nodo;
nodo = record
elemen : integer;
izq : arbol;
der : arbol;
end;
procedure crear_arbol(var a : arbol);
begin
a := nil;
end;
procedure agregar_nodo(var a: arbol; num: integer);
begin
if (a = nil) then
begin
new(a);
a^.elemen := num;
a^.izq := nil;
a^.der:= nil;
end
else
if (num > a^.elemen) then
agregar_nodo(a^.der, num)
else
agregar_nodo(a^.izq, num);
end;
procedure imprimirA(a : arbol);
begin
if (a <> nil) then
begin
write(a^.elemen, ' ');
imprimirA(a^.izq);
imprimirA(a^.der);
end;
end;
var
num : integer;
tree : arbol;
begin
crear_arbol(tree);
write('Ingrese un número: ');
readln(num);
while (num <> -1) do
begin
agregar_nodo(tree, num);
write('Ingrese un número: ');
readln(num);
end;
writeln('----Inciso-----');
imprimirA(tree);
writeln();
readln();
readln();
end.
Valora esta pregunta


0