import
java.util.*;
class
Node {
int
data;
Node left, right;
Node(
int
item) {
data = item;
left = right =
null
;
}
}
public
class
Main {
static
void
inorder(Node root, List<Integer> list) {
if
(root ==
null
)
return
;
inorder(root.left, list);
if
(root.left ==
null
&& root.right ==
null
) {
list.add(root.data);
}
inorder(root.right, list);
}
static
void
findFirstUnmatch(Node root1, Node root2) {
List<Integer> list1 =
new
ArrayList<Integer>();
List<Integer> list2 =
new
ArrayList<Integer>();
inorder(root1, list1);
inorder(root2, list2);
int
n = Math.min(list1.size(), list2.size());
for
(
int
i =
0
; i < n; i++) {
if
(list1.get(i) != list2.get(i)) {
System.out.println(
"First non matching leaves: "
+ list1.get(i) +
" "
+ list2.get(i));
return
;
}
}
}
public
static
void
main(String[] args) {
Node root1 =
new
Node(
5
);
root1.left =
new
Node(
2
);
root1.right =
new
Node(
7
);
root1.left.left =
new
Node(
10
);
root1.left.right =
new
Node(
11
);
Node root2 =
new
Node(
6
);
root2.left =
new
Node(
10
);
root2.right =
new
Node(
15
);
findFirstUnmatch(root1, root2);
}
}