import
java.util.*;
class
Node {
int
data;
Node left, right;
public
Node(
int
data) {
this
.data = data;
left = right =
null
;
}
}
class
PostPreInOrderInOneFlowRecursive {
static
void
traverse(Node root, List<Integer> pre, List<Integer> post, List<Integer> in) {
if
(root ==
null
) {
return
;
}
pre.add(root.data);
traverse(root.left, pre, post, in);
in.add(root.data);
traverse(root.right, pre, post, in);
post.add(root.data);
}
public
static
void
main(String[] args) {
Node root =
new
Node(
1
);
root.left =
new
Node(
2
);
root.right =
new
Node(
3
);
root.left.left =
new
Node(
4
);
root.left.right =
new
Node(
5
);
root.right.left =
new
Node(
6
);
root.right.right =
new
Node(
7
);
root.left.left.left =
new
Node(
8
);
root.left.left.left.right =
new
Node(
12
);
root.left.right.left =
new
Node(
9
);
root.right.right.left =
new
Node(
10
);
root.right.right.right =
new
Node(
11
);
List<Integer> pre =
new
ArrayList<Integer>();
List<Integer> post =
new
ArrayList<Integer>();
List<Integer> in =
new
ArrayList<Integer>();
traverse(root, pre, post, in);
System.out.print(
"Pre Order : "
);
for
(
int
i : pre) {
System.out.print(i +
" "
);
}
System.out.println();
System.out.print(
"Post Order : "
);
for
(
int
i : post) {
System.out.print(i +
" "
);
}
System.out.println();
System.out.print(
"In Order : "
);
for
(
int
i : in) {
System.out.print(i +
" "
);
}
}
}