[C con Clase] Problema en Arbol con 3 Nodos

Alejandro Fernández cronopiomx en discapnet.es
Mie Mar 13 22:58:24 CET 2013


Hola amigos, estoy intentando llenar 1 Arbol de tres 
nodos a lo maximo, tengo 1 funcion para insertar los 
nodos al arbol:

void SkillTree::AddSkill(char* name,char* desc,int 
level,char* parentName)
{
Skill item(name, desc,level); //el nombre es unico
TreeNode* parent = treeContains(root, parentName);

if (parent!=NULL)
{
if ( parent->left == NULL )
parent->left = new TreeNode(item);
else if ( parent->middle == NULL )
parent->middle = new TreeNode(item);
else if ( parent->right == NULL )
parent->right = new TreeNode(item);
}
}

para buscar cualquier nodo en el arbol:
TreeNode* SkillTree::treeContains( TreeNode *root, 
char* parentName ) 
{ 
if (root==NULL) {
return NULL;
}
else if ( strcmp(parentName, root-
>item.getName())==0 ) { 
return root;
}
else if ( root->left!=NULL && 
strcmp(parentName,root->left-
>item.getName())==0) 
{
return treeContains( root->left, parentName );
}
else if (root->middle !=NULL && strcmp(parentName , 
root->middle->item.getName())==0) {
return treeContains( root->middle, parentName );
}
else if (root->right!=NULL && strcmp(parentName , 
root->right->item.getName())==0) {
return treeContains( root->right, parentName ); 
}
return NULL;
}

para imprimir el resultado:

void SkillTree::inorderPrint( TreeNode *root ) {
if ( root != NULL )
{ 
cout<<root->item.getName() << " -- " <<root-
>item.getDescription() <<" [Lvl: " <<root-
>item.getLevel() <<"]\n"; 
inorderPrint( root->left ); 
inorderPrint( root->middle );
inorderPrint( root->right ); 
}
}
------------------------------------------------------------
---------------
en la funcion main()

SkillTree student("Student");
student.Display(cout) ; //llama al metodo 
inorderPrint

student.AddSkill("Alphabet","Mastery of letters and 
sounds",0);
student.Display(cout);

student.AddSkill("Reading","The ability to read all 
manner of written material",1,"Alphabet");
student.AddSkill("Writing","The ability to put your 
thoughts on paper",1,"Alphabet");
student.Display(cout);

student.AddSkill("Speed Reading Level 1","Read any 
text twice as fast as normal",5,"Reading"); 
student.AddSkill("Speed Reading Level 2","Read any 
text four times as fast as normal",10,"Speed 
Reading Level 1");
student.AddSkill("Memorization","Memorize average 
sized texts",10,"Reading");
student.AddSkill("Massive Memorization","Memorize 
large sized texts",20,"Memorization");
student.AddSkill("Spell Writing","The ability to write 
spells",5,"Writing");
student.AddSkill("History","The ability to write (and 
rewrite) history",10,"Writing");
student.AddSkill("Written Creation","The ability to 
write things into reality",20,"History");
student.Display(cout);
------------------------------------------------------------
---

El resultado que obtengo es :
Skill Tree: Student
Empty
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
- Reading -- The ability to read all manner of written 
material [Lvl: 1]
- Writing -- The ability to put your thoughts on paper 
[Lvl: 1]
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
- Reading -- The ability to read all manner of written 
material [Lvl: 1]
- Speed Reading Level 1 -- Read any text twice as 
fast as normal [Lvl: 5]
- Memorization -- Memorize average sized texts [Lvl: 
10]
- Writing -- The ability to put your thoughts on paper 
[Lvl: 1]
- Spell Writing -- The ability to write spells [Lvl: 5]
- History -- The ability to write (and rewrite) history 
[Lvl: 10]
Press any key to continue . . .

y Necesito:

Skill Tree: Student
Empty
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
- Reading -- The ability to read all manner of written 
material [Lvl: 1]
- Writing -- The ability to put your thoughts on paper 
[Lvl: 1]
Skill Tree: Student
- Alphabet -- Mastery of letters and sounds [Lvl: 0]
- Reading -- The ability to read all manner of written 
material [Lvl: 1]
- Speed Reading Level 1 -- Read any text twice as 
fast as normal [Lvl: 5]
- Speed Reading Level 2 -- Read any text four times 
as fast as normal [Lvl: 10]
- Memorization -- Memorize average sized texts [Lvl: 
10]
- Massive Memorization -- Memorize large sized 
texts [Lvl: 20]
- Writing -- The ability to put your thoughts on paper 
[Lvl: 1]
- Spell Writing -- The ability to write spells [Lvl: 5]
- History -- The ability to write (and rewrite) history 
[Lvl: 10]
- Written Creation -- The ability to write things into 
reality [Lvl: 20]

que problema tengo?






Más información sobre la lista de distribución Cconclase