C/Visual C - ayuda con arboles - urgente

 
Vista:

ayuda con arboles - urgente

Publicado por pibeytor (1 intervención) el 22/02/2008 00:32:11
/*
hola chicos.. espero me puedan sacar de este apuro...
este algoritmo funciona en visual c++

lo ke hace es ke agrega palabras a la memoria y eso es todo....

lo ke me falta es una funcion compara una palabra ke yo ingrese con otra ke este en la memoria y me diga si esta bien escrita o no...

la otra, es una funcion ke las imprima en la pantalla el resultado de la comparacion...

me pueden ayudar??
de anteman gracias

*/


#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

class nodo{
public:
nodo(char l){
letra=l;
hermano = NULL;
hijo_mas_izquierda=NULL;
padre = NULL;
}
//private:

char letra;
nodo *hermano;
nodo *hijo_mas_izquierda;
nodo *padre;
};//fin de la clase nodo

class arbol{
public:
void agregar(string palabra);
void agregar(nodo *,nodo *,string,int,int);
void borrar(char l);

private:
nodo *raiz;
};
void arbol::agregar(string palabra)
{
nodo *nuevo = new nodo(palabra[0]);

if(raiz == NULL)
{
raiz = nuevo;
}
else
{
for(nodo *tmp = raiz; tmp != NULL; tmp = tmp->hermano)
{
if(tmp->letra==palabra[0])
{
break;
}

if(tmp->hermano == NULL)
{
tmp->hermano = nuevo;
break;
}
}
}

for(int i = 1; i < palabra.length(); i++)
{
nuevo = new nodo(palabra[i]);
agregar(raiz,nuevo,palabra,0,i);
}
}

void arbol::agregar(nodo *llave, nodo *nuevo, string palabra, int indice, int limite)
{
if (indice < limite)
{
for(nodo *temp = llave; temp != NULL; temp = temp -> hermano )
{
if(temp -> letra == palabra[indice])
{
agregar(temp->hijo_mas_izquierda, nuevo , palabra , indice + 1 , limite);

if(indice == limite-1)
{
if(temp -> hijo_mas_izquierda == NULL)
{
temp -> hijo_mas_izquierda = nuevo;
}
else
{
for(nodo *temp2 = temp -> hijo_mas_izquierda ; temp2 != NULL ; temp2 = temp2 -> hermano)
{
if(temp2->letra==palabra[limite])
{
break;
}

if(temp2->hermano == NULL)
{
temp2->hermano = nuevo;
break;
}
}
}
}
}
}
}
}

int main(){
string palabra;
arbol *a = new arbol();

a->agregar("palabra");a->agregar("aaronita");a->agregar("aba");a->agregar("ababa");a->agregar("ababillarse");
a->agregar("ababol");a->agregar("abacal");a->agregar("abacalero");a->agregar("abacero");a->agregar("abachar");
a->agregar("abacora");a->agregar("abad");a->agregar("abada");a->agregar("abadiado");a->agregar("abandonar");
a->agregar("anabdonismo");a->agregar("abandonista");a->agregar("abanear");a->agregar("abanico");a->agregar("abanicazo");
a->agregar("abanico");a->agregar("abanillo");a->agregar("abanino");a->agregar("abarajar");a->agregar("abarañar");
a->agregar("abaratamiento");a->agregar("abaratar");a->agregar("abarcar");a->agregar("acarrado");a->agregar("abarraganimiento");
a->agregar("abarraganarse");a->agregar("abarrajado");a->agregar("abarrotar");a->agregar("abarrotero");a->agregar("abastecimiento");
a->agregar("abcedario");a->agregar("abedul");a->agregar("abejonear");a->agregar("abellota");a->agregar("abellotado");

cout<<"CORRECTOR ORTOGRAFICO "<<endl;
//String palabra;

cout<<"Escriba una palabra: ";
cin>>palabra;

return 0;
}
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