import
java.util.ArrayList;
class
Node {
int
data;
Node left, right;
Node(
int
d) {
data = d;
left = right =
null
;
}
}
class
BinaryTree {
Node newNode(
int
data) {
Node temp =
new
Node(data);
return
temp;
}
void
collectLeafNodes(Node root, ArrayList<Integer> storeLeaf) {
if
(root.left ==
null
&& root.right ==
null
) {
storeLeaf.add(root.data);
}
if
(root.left !=
null
) {
collectLeafNodes(root.left, storeLeaf);
}
if
(root.right !=
null
) {
collectLeafNodes(root.right, storeLeaf);
}
}
boolean
isSame(Node root1, Node root2) {
ArrayList<Integer> storeLeafTree1 =
new
ArrayList<>();
ArrayList<Integer> storeLeafTree2 =
new
ArrayList<>();
collectLeafNodes(root1, storeLeafTree1);
collectLeafNodes(root2, storeLeafTree2);
return
storeLeafTree1.equals(storeLeafTree2);
}
public
static
void
main(String args[]) {
BinaryTree bt =
new
BinaryTree();
Node root1 = bt.newNode(
1
);
root1.left = bt.newNode(
2
);
root1.right = bt.newNode(
3
);
root1.left.left = bt.newNode(
4
);
root1.right.left = bt.newNode(
6
);
root1.right.right = bt.newNode(
7
);
Node root2 = bt.newNode(
0
);
root2.left = bt.newNode(
1
);
root2.right = bt.newNode(
5
);
root2.left.right = bt.newNode(
4
);
root2.right.left = bt.newNode(
6
);
root2.right.right = bt.newNode(
7
);
if
(bt.isSame(root1, root2)) {
System.out.println(
"Same"
);
}
else
{
System.out.println(
"Not Same"
);
}
}
}