import
java.util.LinkedList;
import
java.util.PriorityQueue;
import
java.util.Queue;
class
Node {
int
data;
Node left, right;
public
Node(
int
data) {
this
.data = data;
this
.left =
this
.right =
null
;
}
}
public
class
BinaryTreeLevelOrder {
public
static
void
printLevelOrder(Node root) {
if
(root ==
null
) {
return
;
}
Queue<Node> queue =
new
LinkedList<>();
queue.add(root);
while
(!queue.isEmpty()) {
int
levelSize = queue.size();
PriorityQueue<Integer> currentLevel =
new
PriorityQueue<>();
for
(
int
i =
0
; i < levelSize; i++) {
Node node = queue.poll();
currentLevel.add(node.data);
if
(node.left !=
null
) {
queue.add(node.left);
}
if
(node.right !=
null
) {
queue.add(node.right);
}
}
while
(!currentLevel.isEmpty()) {
System.out.print(currentLevel.poll() +
" "
);
}
System.out.println();
}
}
public
static
Node newNode(
int
data) {
return
new
Node(data);
}
public
static
void
main(String[] args) {
Node root = newNode(
7
);
root.left = newNode(
6
);
root.right = newNode(
5
);
root.left.left = newNode(
4
);
root.left.right = newNode(
3
);
root.right.left = newNode(
2
);
root.right.right = newNode(
1
);
System.out.println(
"Level Order traversal of binary tree in sorted order is "
);
printLevelOrder(root);
}
}