May 28, 2015 at 7:34am UTC
this code does not work properly, please help
It was able to print out only 2 levels
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
template <typename T>
int BST<T>::nonrecursive_level(const T& item)
{
std::queue<BSTNode*> q1;
BSTNode *temp = myRoot;
BSTNode *frontQueue = NULL;
int level = -1;
if (temp == NULL)
return -1;
q1.push(temp);
while (! q1.empty())
{
frontQueue = q1.front();
T element = q1.front()->data;
cout << "elements " << element << "\n" ;
q1.pop();
if (element == item)
{
element++;
break ;
}
if (temp->left != NULL)
{
q1.push(temp->left);
}
if (temp->right != NULL)
{
q1.push(temp->right);
}
}
return level;
}
Last edited on May 28, 2015 at 5:13pm UTC
May 28, 2015 at 4:48pm UTC
I'm sorry, I don't want to read the code that way
please use the code-tags <> and make indentions
May 28, 2015 at 5:11pm UTC
Code tages are [ code ] and [ /code ] without the spaces. First one at the start of the entire code, second at the end.
May 28, 2015 at 5:14pm UTC
gamer2015. thank you
can you see what i did wrong here now
May 28, 2015 at 6:22pm UTC
I guess BST is for binary sarch tree...
your code should either only print once/twice or never stop because you don't modify temp so temp is allways the root node and you allways check for temp->left and temp->right
you also allways return the value -1 for some reason
Last edited on May 28, 2015 at 6:26pm UTC
May 28, 2015 at 7:35pm UTC
When you push it in the queue, you have updated the temp