Algoritmia - Arreglos

 
Vista:

Arreglos

Publicado por Santiago Cedeño (1 intervención) el 07/05/2003 22:22:45
Quien mepuede ayudar con la resolución de una aplicación en Pascal en el cual se elabore un arbol binario representado a través de tres arreglos.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Resolución de aplicación en Pascal: Árbol binario con tres arreglos

Publicado por Alejandro (307 intervenciones) el 28/02/2024 20:27:28
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
program ArbolBinarioTresArreglos;
 
const
  MAX_NODOS = 100;
 
type
  ArbolBinario = record
    Llave: array[1..MAX_NODOS] of Integer;
    HijoIzquierdo: array[1..MAX_NODOS] of Integer;
    HijoDerecho: array[1..MAX_NODOS] of Integer;
    Raiz: Integer;
  end;
 
procedure InicializarArbol(var arbol: ArbolBinario);
var
  i: Integer;
begin
  for i := 1 to MAX_NODOS do
  begin
    arbol.Llave[i] := 0;
    arbol.HijoIzquierdo[i] := 0;
    arbol.HijoDerecho[i] := 0;
  end;
  arbol.Raiz := 0;
end;
 
procedure InsertarNodo(var arbol: ArbolBinario; nuevaLlave: Integer);
var
  nuevoNodo, actual, padre: Integer;
begin
  nuevoNodo := 1;
  while (arbol.Llave[nuevoNodo] <> 0) do
  begin
    padre := nuevoNodo;
    if nuevaLlave < arbol.Llave[nuevoNodo] then
      nuevoNodo := arbol.HijoIzquierdo[nuevoNodo]
    else
      nuevoNodo := arbol.HijoDerecho[nuevoNodo];
  end;
 
  arbol.Llave[nuevoNodo] := nuevaLlave;
  arbol.HijoIzquierdo[nuevoNodo] := 0;
  arbol.HijoDerecho[nuevoNodo] := 0;
 
  if arbol.Raiz = 0 then
    arbol.Raiz := nuevoNodo
  else if nuevaLlave < arbol.Llave[padre] then
    arbol.HijoIzquierdo[padre] := nuevoNodo
  else
    arbol.HijoDerecho[padre] := nuevoNodo;
end;
 
procedure MostrarArbolEnOrden(arbol: ArbolBinario; nodoActual: Integer);
begin
  if nodoActual <> 0 then
  begin
    MostrarArbolEnOrden(arbol, arbol.HijoIzquierdo[nodoActual]);
    Write(arbol.Llave[nodoActual], ' ');
    MostrarArbolEnOrden(arbol, arbol.HijoDerecho[nodoActual]);
  end;
end;
 
var
  miArbol: ArbolBinario;
  llaves: array[1..MAX_NODOS] of Integer = (50, 30, 70, 20, 40, 60, 80);
 
begin
  InicializarArbol(miArbol);
 
  for i := 1 to Length(llaves) do
    InsertarNodo(miArbol, llaves[i]);
 
  writeln('Árbol binario en orden:');
  MostrarArbolEnOrden(miArbol, miArbol.Raiz);
 
  readln;
end.

Santiago, este programa en Pascal implementa un árbol binario representado a través de tres arreglos: uno para las llaves, otro para los hijos izquierdos y otro para los hijos derechos. La inserción se realiza manteniendo la propiedad del árbol binario de búsqueda. Luego, se muestra el árbol en orden.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar