import
java.util.LinkedList;
import
java.util.Queue;
class
Node
{
int
data;
Node left, right;
public
Node(
int
item)
{
data = item;
left = right =
null
;
}
}
class
BinaryTree
{
Node root;
void
printLevels(Node node,
int
low,
int
high)
{
Queue<Node> Q =
new
LinkedList<>();
Node marker =
new
Node(
4
);
int
level =
1
;
Q.add(node);
Q.add(marker);
while
(Q.isEmpty() ==
false
)
{
Node n = Q.peek();
Q.remove();
if
(n == marker)
{
System.out.println(
""
);
level++;
if
(Q.isEmpty() ==
true
|| level > high)
break
;
Q.add(marker);
continue
;
}
if
(level >= low)
System.out.print( n.data +
" "
);
if
(n.left !=
null
)
Q.add(n.left);
if
(n.right !=
null
)
Q.add(n.right);
}
}
public
static
void
main(String args[])
{
BinaryTree tree =
new
BinaryTree();
tree.root =
new
Node(
20
);
tree.root.left =
new
Node(
8
);
tree.root.right =
new
Node(
22
);
tree.root.left.left =
new
Node(
4
);
tree.root.left.right =
new
Node(
12
);
tree.root.left.right.left =
new
Node(
10
);
tree.root.left.right.right =
new
Node(
14
);
System.out.print(
"Level Order traversal between given two levels is "
);
tree.printLevels(tree.root,
2
,
3
);
}
}