#include <bits/stdc++.h>
using
namespace
std;
struct
Node {
int
data;
struct
Node *left, *right;
};
struct
Node* newNode(
int
data)
{
struct
Node* newNode =
new
Node;
newNode->data = data;
newNode->left = newNode->right = NULL;
return
(newNode);
}
int
sumEvenParent(Node* root) {
if
(root == nullptr) {
return
0;
}
int
sum = 0;
queue<Node*> q;
q.push(root);
while
(!q.empty()) {
int
n = q.size();
for
(
int
i = 0; i < n; i++) {
Node* node = q.front();
q.pop();
if
(node->data % 2 == 0) {
if
(node->left != nullptr) {
sum += node->left->data;
q.push(node->left);
}
if
(node->right != nullptr) {
sum += node->right->data;
q.push(node->right);
}
}
else
{
if
(node->left != nullptr) {
q.push(node->left);
}
if
(node->right != nullptr) {
q.push(node->right);
}
}
}
}
return
sum;
}
int
main()
{
struct
Node* root = newNode(2);
root->left = newNode(3);
root->right = newNode(8);
root->left->left = newNode(2);
root->right->left = newNode(5);
root->right->right = newNode(6);
root->right->left->left = newNode(1);
root->right->right->right = newNode(3);
cout << sumEvenParent(root);
return
0;
}