#include<bits/stdc++.h>
using namespace std;
struct node
{
int data;
struct node* left, *right;
};
typedef struct node* Node;
typedef struct node node;
Node newNode(int data)
{
Node temp = (Node)malloc(sizeof(struct node));
temp->data = data;
temp->left = temp->right = NULL;
return(temp);
}
void getlevelsum(Node root, int *sum, int flag) {
if(!root) return;
if(!flag) *sum += root->data;
else *sum -= root->data;
getlevelsum(root->left, sum, !flag);
getlevelsum(root->right, sum, !flag);
}
int main() {
struct node *root = newNode(5);
root->left = newNode(2);
root->right = newNode(6);
root->left->left = newNode(1);
root->left->right = newNode(4);
root->left->right->left = newNode(3);
root->right->right = newNode(8);
root->right->right->right = newNode(9);
root->right->right->left = newNode(7);
/* Constructed Tree
5
/ \
2 6
/ \ \
1 4 8
/ / \
3 7 9
*/
int sum = 0;
getlevelsum(root, &sum, 0);
printf("%d is the required difference\n", sum);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKICAgIGludCBkYXRhOwogICAgc3RydWN0IG5vZGUqIGxlZnQsICpyaWdodDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSogTm9kZTsKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSBub2RlOwoKTm9kZSBuZXdOb2RlKGludCBkYXRhKQp7CiAgICBOb2RlIHRlbXAgPSAoTm9kZSltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICB0ZW1wLT5kYXRhICA9IGRhdGE7CiAgICB0ZW1wLT5sZWZ0ICA9IHRlbXAtPnJpZ2h0ID0gTlVMTDsKICAgIHJldHVybih0ZW1wKTsKfQoKdm9pZCBnZXRsZXZlbHN1bShOb2RlIHJvb3QsIGludCAqc3VtLCBpbnQgZmxhZykgewoJaWYoIXJvb3QpIHJldHVybjsKCQoJaWYoIWZsYWcpICpzdW0gKz0gcm9vdC0+ZGF0YTsKCWVsc2UgKnN1bSAtPSByb290LT5kYXRhOwoJCglnZXRsZXZlbHN1bShyb290LT5sZWZ0LCBzdW0sICFmbGFnKTsKCWdldGxldmVsc3VtKHJvb3QtPnJpZ2h0LCBzdW0sICFmbGFnKTsKfQoKaW50IG1haW4oKSB7CgogIAlzdHJ1Y3Qgbm9kZSAqcm9vdCA9IG5ld05vZGUoNSk7CiAgICByb290LT5sZWZ0ID0gbmV3Tm9kZSgyKTsKICAgIHJvb3QtPnJpZ2h0ID0gbmV3Tm9kZSg2KTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgID0gbmV3Tm9kZSgxKTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0ID0gbmV3Tm9kZSg0KTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0LT5sZWZ0ID0gbmV3Tm9kZSgzKTsKICAgIHJvb3QtPnJpZ2h0LT5yaWdodCA9IG5ld05vZGUoOCk7CiAgICByb290LT5yaWdodC0+cmlnaHQtPnJpZ2h0ID0gbmV3Tm9kZSg5KTsKICAgIHJvb3QtPnJpZ2h0LT5yaWdodC0+bGVmdCA9IG5ld05vZGUoNyk7CgovKiAgQ29uc3RydWN0ZWQgVHJlZSAgCQoJICAJICA1CgkgICAgLyAgIFwKCSAgIDIgICAgIDYKCSAvICBcICAgICBcICAKCTEgICAgNCAgICAgOAoJICAgIC8gICAgIC8gXCAKCSAgIDMgICAgIDcgICA5IAoqLwoKCWludCBzdW0gPSAwOwogIAlnZXRsZXZlbHN1bShyb290LCAmc3VtLCAwKTsKICAgIHByaW50ZigiJWQgaXMgdGhlIHJlcXVpcmVkIGRpZmZlcmVuY2VcbiIsIHN1bSk7CiAgCXJldHVybiAwOwp9