#include <bits/stdc++.h>
using
namespace
std;
struct
Node {
int
data;
struct
Node *left, *right;
};
Node* getNode(
int
n)
{
struct
Node* root =
new
Node;
root->data = n;
root->left = NULL;
root->right = NULL;
return
root;
}
void
find_sum(Node* root,
int
key,
int
& sum,
bool
incl)
{
if
(root) {
if
(incl) {
sum += root->data;
if
(root->left && root->left->data == key) {
sum -= root->data;
}
else
if
(root->right && root->right->data == key) {
sum -= root->data;
}
}
incl = root->data == key ?
false
:
true
;
find_sum(root->left, key, sum, incl);
find_sum(root->right, key, sum, incl);
}
}
int
main()
{
struct
Node* root = getNode(15);
root->left = getNode(13);
root->left->left = getNode(12);
root->left->left->left = getNode(11);
root->left->right = getNode(14);
root->right = getNode(20);
root->right->left = getNode(18);
root->right->right = getNode(24);
root->right->right->left = getNode(23);
root->right->right->right = getNode(25);
int
key = 20;
int
sum = 0;
find_sum(root, key, sum,
true
);
printf
(
"%d "
, sum);
return
0;
}