Level order traversal
import java.util.*;
public class LevelorderTraversal {
public static class Node {
int data;
Node left;
Node right;
Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
static int idx = -1;
public static Node BuildTree(int nodes[]) {
idx++;
if (nodes[idx] == -1) {
return null;
}
Node newnode = new Node(nodes[idx]);
newnode.left = BuildTree(nodes);
newnode.right = BuildTree(nodes);
return newnode;
}
public static void levelorder(Node root) {
if (root == null) {
return;
}
Queue<Node> q = new LinkedList<>();
q.add(root);
q.add(null);
while (!q.isEmpty()) {
Node currNode = q.remove();
if (currNode == null) {
System.out.println();
if (q.isEmpty()) {
break;
} else {
q.add(null);
}
} else {
System.out.println(currNode.data + " ");
if (currNode.left != null) {
q.add(currNode.left);
}
if (currNode.right != null) {
q.add(currNode.right);
}
}
}
}
public static void main(String[] args) {
int nodes[]={1,2,4,-1,-1,5,-1,-1,3,-1,6,-1,-1};
LevelorderTraversal tree=new LevelorderTraversal();
Node root=tree.BuildTree(nodes);
tree.levelorder(root);
}
}
Comments
Post a Comment