Enero 17, 2018, 03:44:38 am

Autor Tema: Arboles Binarios c++  (Leído 1388 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado maferavagar

  • CPQUE??
  • *
  • Mensajes: 1
    • Ver Perfil
Arboles Binarios c++
« en: Julio 05, 2015, 09:06:24 pm »
Buenas Noches, alguien me podria decir que significa within this contex; me dice que HijoIzquierdo,HijoDerecho y valor son privados, estoy usando Dev c++
Pongo mi codigo. De antemano gracias.
#include <time.h>
#include <stdio.h>

#include <stdlib.h>
#include <cmath>
#include <iostream>

using namespace std;

class Nodo
{
    private:
    int dato;
    Nodo *HijoIzquierdo, *HijoDerecho,*Raiz;
    public:
        Nodo* InsertaNodo(int, Nodo*);
        void EnOrden(Nodo*);
        void PreOrden(Nodo*);
        void PostOrden(Nodo*);
        int Nivel_arbol(Nodo*);
        int NumeroNodo(Nodo*);
        int FE(Nodo*);
        int Total_hojas2(Nodo*);
        int Total_hojas(Nodo*);
        int Suma_nodos(Nodo*);
   
};



//Declaro las funciones que tiene el programa

Nodo::Nodo* InsertaNodo(int valor, Nodo*subArbol)
{
   if(subArbol==NULL)
   {
      subArbol=new Nodo;
      subArbol->HijoIzquierdo=subArbol->HijoDerecho=NULL;
      subArbol->dato=valor;
   }
   else
     
      if(valor<subArbol->dato)
         subArbol->HijoIzquierdo=InsertaNodo(valor, subArbol->HijoIzquierdo);
   
      else
         subArbol->HijoDerecho=InsertaNodo(valor, subArbol->HijoDerecho);
   return(subArbol);
}


void Nodo:: EnOrden(Nodo *subArbol)
{
   if (subArbol!=NULL)
   {
      EnOrden(subArbol->HijoIzquierdo);
      printf("%d ", subArbol->dato);
      EnOrden(subArbol->HijoDerecho);
   } 
}

void Nodo:: PreOrden(Nodo *subArbol)
{
   if (subArbol!=NULL)
   {
      printf("%d ", subArbol->dato);
      PreOrden(subArbol->HijoIzquierdo);     
      PreOrden(subArbol->HijoDerecho);
   } 
}

void Nodo:: PostOrden(Nodo *subArbol)
{
   if (subArbol!=NULL)
   {
     
      PostOrden(subArbol->HijoIzquierdo);     
      PostOrden(subArbol->HijoDerecho);
      printf("%d ", subArbol->dato);
   } 
}

int Nodo:: Nivel_arbol(Nodo *subArbol)
{
    int a=0,b=0;
   if(subArbol==NULL)
   {
      return 0;
   }
   
   else
   {
      a=Nivel_arbol(subArbol->HijoIzquierdo)+1;
      b=Nivel_arbol(subArbol->HijoDerecho)+1;
   }
   if(a>=b)
      return a; //La raiz no se suma
   else
      return b; //La raiz no se suma
   
}

int Nodo:: NumeroNodo (Nodo *subArbol)
{
   if(subArbol==NULL)
      return 0;
   
   else
      return 1+NumeroNodo(subArbol->HijoIzquierdo)+NumeroNodo(subArbol->HijoDerecho);
}

int Nodo:: FE(Nodo *subArbol)
{
   if(subArbol==NULL)
      return 0;
   
   else
      return Nivel_arbol(subArbol->HijoDerecho)-Nivel_arbol(subArbol->HijoIzquierdo);
}

int Nodo:: Total_hojas(Nodo *subArbol)
{
   if(Raiz==NULL)
      return 0;
   if(Raiz->HijoDerecho==NULL && Raiz->HijoIzquierdo==NULL)
      return 0;

   return Total_hojas2(subArbol);
}

int Nodo:: Total_hojas2(Nodo *subArbol)
{
   if(subArbol==NULL)
      return 0;

   if(subArbol->HijoDerecho==NULL&&subArbol->HijoIzquierdo==NULL)
      return 1;

   return Total_hojas(subArbol->HijoDerecho) + Total_hojas(subArbol->HijoIzquierdo);


   //return 0;
}

int Nodo::Suma_nodos(Nodo *subArbol)
{
   if(subArbol==NULL)
      return 0;

   return subArbol->dato + Suma_nodos(subArbol->HijoDerecho) + Suma_nodos(subArbol->HijoIzquierdo);

}

int main()
{
    Nodo Obj;
   
   int k,num,opc=1,valor,nivel=0,nodos=0,nivel_esperado,frecu=0,hojas=0;
   Nodo *Raiz;
   Raiz=NULL;
     
   while(opc!=11)
   {
      printf("1.- Insertar Arbol\n");
      printf("2.- Recorrido en preorden\n");
      printf("3.- Recorrido  en orden\n");
      printf("4.- Recorrido en postorden\n");
      printf("5.- Nivel del arbol\n");
      printf("6.- Numero de Nodos\n");
      printf("7.- Nivel Perfecto de Nodos\n");
      printf("8.- Factor de Equilibrio\n");
      printf("9.- Numero de Hojas\n");
      printf("10.- Suma de Nodos\n");
      printf("11.- Salir\n");
      scanf("%d",&opc);
     
      switch(opc)
      {
         case 1:
            printf("Inserta Numero para el Arbol\n");
            scanf("%d",&num);
            Raiz=Obj.InsertaNodo(num, Raiz);
            //printf("Quieres seguir...");
            break;
         
         case 2:  Obj.PreOrden(Raiz);
            printf("\n");
            break;
           
         case 3:  Obj.EnOrden(Raiz);
            printf("\n");
            break;
           
         case 4:  Obj.PostOrden(Raiz);
            printf("\n");
            break;
           
         case 5:
            nivel=Obj.Nivel_arbol(Raiz);
            printf("Nivel del Arbol %d\n", nivel-1);
            break;
           
         case 6:
            nodos=Obj.NumeroNodo(Raiz);
            printf("Numero de Nodos %d\n", nodos);
            break;
           
         case 7:
            nivel_esperado = long(float(Obj.NumeroNodo(Raiz)))/log(2.0);
            printf("El Nivel Perfecto %d\n", nivel_esperado);
            break;
           
         case 8:
            frecu=Obj.FE(Raiz);
            printf("Factor de Equilibrio es %d \n", frecu);
            break;
         
         case 9:
            hojas=Obj.Total_hojas(Raiz);
            printf("La cantidad de Hojas es %d\n",hojas);
            //cout<<hojas<<endl;
            break;

         case 10:
            printf("La suma es %d\n", Obj.Suma_nodos(Raiz));
            break;


           
      }
      //system("cls");
   }
   system("PAUSE");
   return 0;   
   
}

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7307
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Arboles Binarios c++
« Respuesta #1 en: Agosto 22, 2015, 11:04:57 pm »
¿puedes poner una captura del error?

al probarlo en principio veo esto:

Código: You are not allowed to view links. Register or Login
enc.cpp:33:1: error: ‘Nodo::Nodo’ names the constructor, not the type
 Nodo::Nodo* InsertaNodo(int valor, Nodo*subArbol)
 ^
<builtin>: recipe for target 'enc' failed

veamos cómo vamos filtrando esto. En C++ puedes utilizar el modo debug sin problemas. El dev-cpp te lo permite y puedes acercate más, quizás, al origen del error. Siguiendo papso a paso tú dódigo en runtime.

Una cosa, igual que has echo con "math.h" debes hacer igual con el resto de la librería C que utilices en C++ renombra time.h, stdio.h y stdlib.h al modo C++ ctime, cstdio y cstdlib  ;)
Is the truth out there?


question
Programa sobre arboles binarios

Iniciado por ile_illness

1 Respuestas
3864 Vistas
Último mensaje Enero 02, 2012, 07:12:38 pm
por Kreusser
question
Arboles binarios, expresiones regulares y aritmética

Iniciado por |ESPIGON|

3 Respuestas
5101 Vistas
Último mensaje Junio 22, 2010, 03:07:43 pm
por jep
xx
Arboles en Java

Iniciado por Mrhappiness

8 Respuestas
5341 Vistas
Último mensaje Junio 17, 2008, 05:55:19 pm
por urelio
resuelto
Arboles en Pascal

Iniciado por tenaciousd

7 Respuestas
1996 Vistas
Último mensaje Octubre 29, 2010, 06:07:28 pm
por .xAk.
xx
arboles (pequenna aportacion)

Iniciado por AzRaEL

1 Respuestas
2321 Vistas
Último mensaje ſeptiembre 11, 2005, 12:01:01 am
por vart001
xx
Calculadora usando arboles

Iniciado por FreakMind

5 Respuestas
3514 Vistas
Último mensaje Junio 06, 2007, 07:55:33 pm
por FreakMind
xx
arboles porfa ayuda!!!!

Iniciado por supermancito

1 Respuestas
1063 Vistas
Último mensaje Octubre 22, 2007, 05:43:52 am
por FreakMind
xx
México sembró 8 millones de árboles

Iniciado por Chino Antrax

0 Respuestas
651 Vistas
Último mensaje Julio 06, 2008, 09:49:03 pm
por Chino Antrax
xx
¿Que son Archivos Binarios?

Iniciado por dragonoscuro203

2 Respuestas
1225 Vistas
Último mensaje Junio 22, 2007, 01:07:01 pm
por happy-word
question
programa de binarios

Iniciado por mora_fimee

4 Respuestas
1864 Vistas
Último mensaje Junio 13, 2009, 11:48:30 am
por RockoX