Question & Answer: Could someone please explain in super detail what happens in this code?…..

C++ Binary Tree

Could someone please explain in super detail what happens in this code?

nt IntBinaryTree::numAtLevel(TreeNode *nodePtr, int level)
{
level–;

if (level == 0)
{
if (nodePtr)

return 1;
else
return 0;
}

else if (!nodePtr)
{
return 0;
}

else
{
return numAtLevel(nodePtr->left, level)

+ numAtLeve(nodePtr->right, level);
}
}

int IntBinaryTree::getWidth()
{
int height = treeHeight();

int nodes;

int largest = 0;

for (int n = 1; n <= height; n++)
{
nodes = widthLevel(root, n);

largest = nodes > largest ? nodes : largest;
}

return largest;
}

Expert Answer

 

int IntBinaryTree::numAtLevel(TreeNode *nodePtr, int level)
{
//this function returns the number of nodes upto the given level, recurisively..
level–;//variable to keep track of levels
if (level == 0)//if level is 0 means at leaf level
{
if (nodePtr) //if there is a leaf then
return 1;//returning 1// because we have nod
else//if there is no leaf…
return 0;//then returning 0
}
else if (nodePtr==null) //if tree or subtree is empty..
{
return 0;//if no node present then returning 0
}
else
{
//if node is present…then
return numAtLevel(nodePtr->left, level) + numAtLevel(nodePtr->right, level);
//calling two recursive functions/./ one traverses the left sub tree … another traverses right sub tree
//every thing which are returned by the function calls are added here.. and finally.
//returns the number of nodes upto the given level, recurisively..
}
}

int IntBinaryTree::getWidth()
{
//all detailes not given so …can’t explain this function
int height = treeHeight();//finding the height of the tree
int nodes;
int largest = 0;
for (int n = 1; n <= height; n++)
{
nodes = widthLevel(root, n);

largest = nodes > largest ? nodes : largest;
}

return largest;
}

Still stressed from student homework?
Get quality assistance from academic writers!