Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ Binary Tree Could someone please explain in super detail what happens in thi

ID: 3868023 • Letter: C

Question

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;
}

Explanation / 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;
}