class
Node {
char
knowledge;
Node left, proper;
Node(
char
merchandise) {
knowledge = merchandise;
left = proper =
null
;
}
}
class
Index {
int
index;
}
class
BinaryTree {
Node root;
Index index_obj =
new
Index();
void
storeAlternate(Node node,
char
arr[],
Index index,
int
l)
{
if
(node ==
null
) {
return
;
}
storeAlternate(node.left, arr, index, l +
1
);
if
(l %
2
!=
0
) {
arr[index.index] = node.knowledge;
index.index++;
}
storeAlternate(node.proper, arr, index, l +
1
);
}
void
modifyTree(Node node,
char
arr[],
Index index,
int
l)
{
if
(node ==
null
) {
return
;
}
modifyTree(node.left, arr, index, l +
1
);
if
(l %
2
!=
0
) {
node.knowledge = arr[index.index];
(index.index)++;
}
modifyTree(node.proper, arr, index, l +
1
);
}
void
reverse(
char
arr[],
int
n) {
int
l =
0
, r = n -
1
;
whereas
(l < r) {
char
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l++;
r--;
}
}
void
reverseAlternate()
{
reverseAlternate(root);
}
void
reverseAlternate(Node node)
{
char
[] arr =
new
char
[
100
];
storeAlternate(node, arr, index_obj,
0
);
reverse(arr, index_obj.index);
index_obj.index =
0
;
modifyTree(node, arr, index_obj,
0
);
}
void
printInorder() {
printInorder(root);
}
void
printInorder(Node node) {
if
(node ==
null
) {
return
;
}
printInorder(node.left);
System.out.print(node.knowledge +
" "
);
printInorder(node.proper);
}
public
static
void
major(String args[]) {
BinaryTree tree =
new
BinaryTree();
tree.root =
new
Node(
'a'
);
tree.root.left =
new
Node(
'b'
);
tree.root.proper =
new
Node(
'c'
);
tree.root.left.left =
new
Node(
'd'
);
tree.root.left.proper =
new
Node(
'e'
);
tree.root.proper.left =
new
Node(
'f'
);
tree.root.proper.proper =
new
Node(
'g'
);
tree.root.left.left.left =
new
Node(
'h'
);
tree.root.left.left.proper =
new
Node(
'i'
);
tree.root.left.proper.left =
new
Node(
'j'
);
tree.root.left.proper.proper =
new
Node(
'ok'
);
tree.root.proper.left.left =
new
Node(
'l'
);
tree.root.proper.left.proper =
new
Node(
'm'
);
tree.root.proper.proper.left =
new
Node(
'n'
);
tree.root.proper.proper.proper =
new
Node(
'o'
);
System.out.println(
"Inorder Traversal of given tree"
);
tree.printInorder();
tree.reverseAlternate();
System.out.println(
""
);
System.out.println(
""
);
System.out.println(
"Inorder Traversal of modified tree"
);
tree.printInorder();
}
}