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