#include <bits/stdc++.h>
using
namespace
std;
struct
Node
{
int
data;
Node *left;
Node *right;
Node(
int
x)
{
data = x;
left = right = NULL;
}
};
Node *removePathLessThanK(Node *node,
int
K,
int
sum)
{
if
(node == NULL)
{
return
NULL;
}
if
(node->left != NULL)
{
node->left = removePathLessThanK(
node->left, K,
sum + node->left->data);
}
if
(node->right != NULL)
{
node->right = removePathLessThanK(
node->right, K,
sum + node->right->data);
}
if
(node->left == NULL &&
node->right == NULL && sum < K)
{
node = NULL;
return
node;
}
return
node;
}
void
viewTree(Node *node)
{
if
(node != NULL)
{
cout << node->data <<
" "
;
viewTree(node->left);
viewTree(node->right);
}
}
void
removePathLessThanKUtil(Node *node,
int
K,
int
sum)
{
Node *result = removePathLessThanK(node, K, sum);
viewTree(result);
}
int
main()
{
int
K = 27;
Node *root = NULL;
root =
new
Node(5);
root->right =
new
Node(3);
root->left =
new
Node(4);
root->left->left =
new
Node(9);
root->right->right =
new
Node(9);
root->left->right =
new
Node(8);
root->left->right->right =
new
Node(11);
root->left->right->left =
new
Node(5);
root->left->right->left->left =
new
Node(6);
root->left->right->left->right =
new
Node(2);
root->right->right->right =
new
Node(4);
removePathLessThanKUtil(root, K, root->data);
}