Ho implementanto la funzione in oggetto nel seguente modo:
codice:
//*level_count
int level_count(t_tree tree)
{
if(tree->right==NULL && tree->left==NULL)
return 1;
else
{
if(tree->right!=NULL)
{
return 1+ level_count(tree->right);
}
else
{
if(tree->left!=NULL)
{
return 1+ level_count(tree->left);
}
else
{
int level_right=level_count(tree->right);
int level_left=level_count(tree->left);
if(level_right>level_left)
return 1+level_right;
else
return 1+level_left;
}
}
}
}
...però anzichè restituirmi la profondità mi restituisce il numero di valori inseriti. Ho controllato più volte e a livello logico mi sembra corretta, ma se inserisco i valori
13
18
8
9
14
6
che dovrebbero essere organizzati in un albero con profondità 3 (radice compresa) la funzione mi restituisce 6.
La funzione di inserimento nell'albero è la seguente:
codice:
//*tree_insert
t_tree tree_insert(t_tree tree,t_info info)
{
if(tree==NULL)
{
t_node_t* new_node;
new_node=node_t_create(info);
return new_node;
}
else
{
if(info.n>tree->info.n)
{
tree->right=tree_insert(tree->right,info);
return tree;
}
else
{
tree->left=tree_insert(tree->left,info);
return tree;
}
}
}
Qualcuno mi da qualchd hint per trovare l'errore?