import
java.util.*;
class
Node
{
int
data;
Node left, right;
Node(
int
key)
{
data = key;
left = right =
null
;
}
}
class
GFG
{
static
ArrayList<Integer> pre =
new
ArrayList<Integer>();
static
HashMap<Integer, Integer> mp =
new
HashMap<Integer, Integer>();
public
static
Node insertNode(Node head,
int
key)
{
if
(head ==
null
)
head =
new
Node(key);
else
{
if
(key < head.data)
head.left = insertNode(head.left, key);
else
head.right = insertNode(head.right, key);
}
return
head;
}
public
static
int
preOrder(Node head)
{
if
(head ==
null
)
return
0
;
pre.add(head.data);
mp.put(head.data, head.data +
preOrder(head.left));
mp.put(head.data, head.data +
preOrder(head.right));
mp.put(head.data, head.data +
1
);
return
mp.get(head.data);
}
public
static
void
performQueries(
int
node)
{
for
(
int
i =
0
; i < pre.size();)
{
if
(pre.get(i) == node)
{
i += mp.get(pre.get(i));
}
else
{
System.out.print(pre.get(i) +
" "
);
i++;
}
}
System.out.println();
}
public
static
void
main (String[] args)
{
Node root =
null
;
root = insertNode(root,
8
);
root = insertNode(root,
4
);
root = insertNode(root,
10
);
root = insertNode(root,
15
);
root = insertNode(root,
14
);
root = insertNode(root,
88
);
root = insertNode(root,
64
);
preOrder(root);
performQueries(
15
);
performQueries(
88
);
}
}