发布于 2020-11-29 17:32:49
若要打印处于奇数级别的偶数值的总数,需要保留一个全局变量,该变量将存储偶数节点的计数。您需要遍历树inOrder wise,并且只遍历给定级别的奇数节点。我正在附加下面的代码片段。打印变量c以获得所需的结果。
int c=0; // Maintain a global variable to keep count
int printLevelOrder()
{
int h = height(root);
for(int i=1;i<=h;i++) // i=1 -> level 0
{
if( (i-1)%2 != 0) // level start from 0 and height from 1. traverse only for odd levels
{
evenNode(root, i);
}
}
}
// fn to calculate the height of BST
int height(Node root)
{
if(root == null)
return 1;
else
{
int lheight = height(root.left);
int rheight = height(root.right);
if(lheight > rheight)
return lheight;
else
return rheight;
}
}
// traversing at a given level
void evenNode(Node root, int level)
{
if(root == null)
return ;
if(level ==1)
{
if(root.data %2 == 0) // check if bode is even then increase counter.
c++;
}
else if(level > 1)
{
evenNode(root.left , level -1);
evenNode(root.right, level - 1);
}
}发布于 2020-11-29 17:25:15
你可以这样做:
void printInOrder(Node *root, int level)
{
if (root != NULL)
{
if (level & 1) {
// Do something at odd level only
}
printInOrder(root->left, level+1);
printInOrder(root->right, level+1);
}
}https://stackoverflow.com/questions/65062816
复制相似问题