これは私のコードです:
#include <iostream>
using namespace std;
class Nodo{
public:
int valor;
Nodo *Padre;
Nodo *HijoIzquierdo;
Nodo *HijoDerecho;
Nodo(){
Padre=HijoIzquierdo=HijoDerecho=NULL;
valor=0;
}
};
class Arbol{
public:
Nodo *Raiz;
Arbol(){
Raiz=new Nodo();
Raiz->valor=5;
Raiz->HijoDerecho->Padre=Raiz->HijoIzquierdo->Padre=Raiz;
Raiz->HijoIzquierdo->valor=7;
Raiz->HijoIzquierdo->HijoIzquierdo->valor=18;
Raiz->HijoIzquierdo->HijoIzquierdo->Padre=Raiz->HijoIzquierdo;
Raiz->HijoDerecho->valor=15;
Raiz->HijoDerecho->HijoIzquierdo->valor=30;
Raiz->HijoDerecho->HijoIzquierdo->Padre=Raiz->HijoDerecho->HijoDerecho>Padre=Raiz->HijoDerecho;
Raiz->HijoDerecho->HijoDerecho->valor=8;
}
void Arbol::CantidadNodos(Nodo *actual=new Nodo(),int cantNodos){;
if(actual->HijoDerecho==NULL && actual->HijoIzquierdo==NULL){
cout<<"El arbol tiene: "<<cantNodos<<" nodos"<<endl;
return;
}
return Arbol::CantidadNodos(actual=actual->HijoIzquierdo,cantNodos++);
}
};
int main() {
int opcion;
Nodo *nodo=new Nodo();
Arbol *ar = new Arbol();
cout<<"Ingrese la opcion que desea realizar"<<endl;
cin>>opcion;
if(opcion==1){
ar->CantidadNodos(ar->Raiz,0);
}
}
そして、それをコンパイルすると、ビルドは成功しますが、実行されません。問題がどこにあるかを確認するためにいくつかのカウントを入れてみました。問題は次の行にあります。
Arbol *ar = new Arbol();
コンパイラがその行に到達すると、クラッシュします。なぜですか?