#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);
}
void
findPathUtil(Node* root,
int
k,
vector<
int
> path,
int
flag,
int
& ans)
{
if
(root == NULL)
return
;
if
(root->data >= k)
flag = 1;
if
(root->left == NULL && root->right == NULL) {
if
(flag == 1) {
ans = 1;
cout <<
"("
;
for
(
int
i = 0; i < path.size(); i++) {
cout << path[i] <<
", "
;
}
cout << root->data <<
"), "
;
}
return
;
}
path.push_back(root->data);
findPathUtil(root->left, k, path, flag, ans);
findPathUtil(root->right, k, path, flag, ans);
path.pop_back();
}
void
findPath(Node* root,
int
k)
{
int
flag = 0;
int
ans = 0;
vector<
int
> v;
findPathUtil(root, k, v, flag, ans);
if
(ans == 0)
cout <<
"-1"
;
}
int
main(
void
)
{
int
K = 25;
struct
Node* root = newNode(10);
root->left = newNode(5);
root->right = newNode(8);
root->left->left = newNode(29);
root->left->right = newNode(2);
root->right->right = newNode(98);
root->right->left = newNode(1);
root->right->right->right = newNode(50);
root->left->left->left = newNode(20);
findPath(root, K);
return
0;
}