Dev - C++ - Arbol binario - nodos superiores a la raiz

 
Vista:
Imágen de perfil de Juan Manuel
Val: 38
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arbol binario - nodos superiores a la raiz

Publicado por Juan Manuel (21 intervenciones) el 27/10/2019 17:40:46
Hola estaba teniendo problemas con este algoritmo que deberia contar los nodos con valores superiores al de la raiz

1
2
3
4
5
6
7
8
9
10
11
int mayor_que_R (arbol a){
	int x = a->dato;
	if(a==NULL)
		return 0;
 	else{
		if(a->dato > x)
			return 1+ mayor_que_R (a->izq) + mayor_que_R (a->der);
		else
			return mayor_que_R (a->izq) + mayor_que_R (a->der);
	}
}

Una pregunta mas

¿Al declara una variable dentro de una funcion/procedimiento recursivo su valor se mueve con la recursividad o queda fijo?
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 Juan Manuel
Val: 38
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arbol binario - nodos superiores a la raiz

Publicado por Juan Manuel (21 intervenciones) el 27/10/2019 21:23:31
Hola, ya pude solucionarlo ... creo.

Lo que hice fue mandar el valor de la raiz como parametro y luego comparar

1
2
3
4
5
6
7
8
9
10
int mayor_que_R (arbol a, int x){
	if(a==NULL)
		return 0;
 	else{
 		if(a->dato > x)
 			return 1+mayor_que_R (a->izq,x) + mayor_que_R (a->der,x);
		else
			return mayor_que_R (a->izq,x) + mayor_que_R (a->der,x);
	}
}

de todas formas si encuentran otra solucion lo agradeceria mucho
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arbol binario - nodos superiores a la raiz

Publicado por Rodrigo (539 intervenciones) el 27/10/2019 23:18:47
Si aprovechas el hecho que las comparaciones tienen valor podrias simplificar el codigo que mostraste a este:

1
2
3
4
5
int mayor_que_R(arbol a, int x){
   if( a == NULL ) return 0;
 
   return (a->dato > x) + mayor_que_R(a->izq, x) + mayor_que_R(a->der, x);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar