Hey everyone. I first post and I couldn't figure out how to encase my code, sorry. Let me know and I'll do it next post. Anyways, I've built binary tree using recursion and included a function to print out the sum of the level of the tree of a given input by a user. My problem isn't that my function doesn't work, but it prints out to the console each levels sum where I only want the level given from the input. For example, if this is my tree:
1
/ \
2 3
/ \ / \
4 5 6 7
it will print out:
1
5
22
where I only want it to print out 22.
Now I see in my function why is it printing out all lines, but can't figure out a different solution. I'm using a static variable to add the total up. If you suggest using a global static variable, I already tried and doesn't work. Any suggestions would really help. The function code is below and based on the tree above as a sample tree with the input -3. Thanks a ton!
void sumLevel(treeNode *&ptr, int input /* -3 */, static int depth /* == -1*/)
{
static int depthTotal = 0;
if(input == depth)
{
depthTotal = depthTotal + ptr->data;
cout << depthTotal << endl;
return;
}
if(ptr->left != NULL)
{
sumLevel(ptr->left, input, depth - 1);
}
if(ptr->right != NULL)
{
sumLevel(ptr->right, input, depth - 1);
}
}