Print level order traversal of Binary Tree

Solution)

There are three approaches.

  1. Iterative
    1. Using two queues
    2. Using one queue with one special null for line break
  2. Recursive

Iterative approach

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int v) {
        val = v;
        left = right = null;
    }
}
public void printLevelOrder(TreeNode root) {
    Queue<TreeNode> queue = new LinkedList<>();
    queue.add(root);
    queue.add(null);
    while(queue.size() != 1) {
        TreeNode node;
        while((node = queue.remove()) != null) {
            System.out.print(node.val);
            if (node.left != null) queue.add(node.left);
            if (node.right != null) queue.add(node.right);
        }
        System.out.println();
        queue.add(null);
    }
}

Recursive approach

public void helper(Queue<TreeNode> queue) {
    if (queue.isEmpty()) return;
    Queue<TreeNode> cQueue = new LinkedList<>();
    while(!queue.isEmpty()) {
        TreeNode node = queue.remove();
        System.out.print(node.val);
        if (node.left != null) cQueue.add(node.left);
        if (node.right != null) cQueue.add(node.right);
    }
    System.out.println();
    helper(cQueue);
}

public void printLevelOrder(TreeNode root) {
    Queue<TreeNode> queue = new LinkedList();
    queue.add(root);
    helper(queue);
}

results matching ""

    No results matching ""