
Arbol binario c++ Ayuda
Publicado por javier (1 intervención) el 28/07/2017 20:16:56
Buenas una consulta, es un arbol binario donde el nodo raiz debe tener el numero mayor, y los demas tienen que ir entrando al arbol por orden de llegada, cumpliendo que cada nodo tenga dos hijos, de izquierda a derecha, pero no me esta realizando el arbol, cuando ejecuto el post orden me da solo el numero 7 y borra los demas numeros.
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include<iostream>
#include<cstdlib>
using namespace std;
int arreglo[100];
int contador=0;
int numNodos;
struct nodo{
int num;
struct nodo *izq, *der;
};
typedef struct nodo *PER;
//aqui debe buscar el primer nodo disponible de izquierda a derecha
PER Hijos(PER &arbol){
if(arbol->izq==NULL){
return arbol->izq;
}else if(arbol->der==NULL){
return arbol->der;
}else{
Hijos(arbol->izq);
Hijos(arbol->der);
}
}
PER crearNodo(int x)
{
PER nuevoNodo = new(struct nodo);
nuevoNodo->num = x;
nuevoNodo->izq = NULL;
nuevoNodo->der = NULL;
return nuevoNodo;
}
void Insertar(PER &arbol,int x){
arbol=crearNodo(x);
}
//debe evaluar el nodo si es mayor o menor al que esta entrando
void NodoMayor(PER &pos,int x){
PER hijo=NULL;
if(pos==NULL){
pos=crearNodo(x);
}else if(pos->num<x){
int aux=pos->num;
pos->num=x;
hijo=Hijos(pos);
Insertar(hijo,x);
//llamar al metodo que aun no cree
}else{
hijo=Hijos(pos);
Insertar(hijo,x);
}
}
void preOrden(PER pin)
{
if(pin!=NULL)
{
cout << pin->num <<" ";
preOrden(pin->izq);
preOrden(pin->der);
}
}
void enOrden(PER pin){
if(pin!=NULL)
{
enOrden(pin->izq);
cout << pin->num << " ";
enOrden(pin->der);
}
}
void postOrden(PER arbol)
{
if(arbol!=NULL)
{
postOrden(arbol->izq);
postOrden(arbol->der);
cout << arbol->num<< " ";
}
}
int main (int argc, char *argv[]) {
PER arbol=NULL;
cout << "\n\t\t ..[ ARBOL BINARIO DE BUSQUEDA ].. \n\n";
cout << " Numero de nodos del arbol: ";
cin >> numNodos;
cout << endl;
for(int i=0; i<numNodos; i++)
{
cout << " Numero del nodo " << i+1 << ": ";
cin >> arreglo[i];
NodoMayor(arbol,arreglo[i]);
}
//preOrden(per);
//enOrden(per);
postOrden(arbol);
return 0;
}
Valora esta pregunta


0