import
java.util.ArrayList;
import
java.util.List;
class
Node {
int
val;
Node left, right;
}
public
class
Main {
static
Node createNode(
int
val) {
Node newNode =
new
Node();
newNode.val = val;
newNode.left =
null
;
newNode.right =
null
;
return
newNode;
}
static
boolean
isPrime(
int
n) {
if
(n <=
1
)
return
false
;
for
(
int
i =
2
; i * i <= n; i++) {
if
(n % i ==
0
)
return
false
;
}
return
true
;
}
static
void
inorder(Node root, List<Integer> primes) {
if
(root ==
null
)
return
;
inorder(root.left, primes);
if
(isPrime(root.val))
primes.add(root.val);
inorder(root.right, primes);
}
static
void
maxProduct(Node root) {
List<Integer> primes =
new
ArrayList<>();
inorder(root, primes);
int
n = primes.size();
if
(n ==
0
)
System.out.println();
else
{
int
minPrime = Integer.MAX_VALUE;
int
maxPrime = Integer.MIN_VALUE;
for
(
int
i =
0
; i < n; i++) {
if
(primes.get(i) < minPrime)
minPrime = primes.get(i);
if
(primes.get(i) > maxPrime)
maxPrime = primes.get(i);
}
System.out.println(minPrime * maxPrime);
}
}
public
static
void
main(String[] args) {
Node root = createNode(
4
);
root.left = createNode(
5
);
root.right = createNode(
7
);
root.left.left = createNode(
1
);
root.left.right = createNode(
3
);
root.right.left = createNode(
5
);
root.right.right = createNode(
8
);
maxProduct(root);
}
}