From f4c6f474bc3fd54b42bc867c0256e5d2314ced5c Mon Sep 17 00:00:00 2001 From: Sri Harsha Damarla Date: Wed, 17 Jun 2026 08:27:35 +0530 Subject: [PATCH] tree level order traversal --- input.txt | 5 +- src/com/dsa/trees/LevelOrderTraversal.java | 58 ++++++++++++++++++++++ src/com/dsa/trees/TreeNode.java | 11 ++++ 3 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 src/com/dsa/trees/LevelOrderTraversal.java create mode 100644 src/com/dsa/trees/TreeNode.java diff --git a/input.txt b/input.txt index 7e7e1e8..4858d6d 100644 --- a/input.txt +++ b/input.txt @@ -1,4 +1 @@ -3 -1 3 8 -2 3 4 -1 2 5 \ No newline at end of file +3,9,20,null,null,15,7 \ No newline at end of file diff --git a/src/com/dsa/trees/LevelOrderTraversal.java b/src/com/dsa/trees/LevelOrderTraversal.java new file mode 100644 index 0000000..22978bb --- /dev/null +++ b/src/com/dsa/trees/LevelOrderTraversal.java @@ -0,0 +1,58 @@ +package com.dsa.trees; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; + +public class LevelOrderTraversal { + public static void main(String[] args) { + try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) { + String[] elements = reader.readLine().trim().split(","); + Queue queue = new LinkedList<>(); + TreeNode root = new TreeNode(Integer.parseInt(elements[0])); + queue.offer(root); + int index = 1; + while (!queue.isEmpty() && index < elements.length) { + TreeNode node = queue.poll(); + if (!elements[index].equalsIgnoreCase("null")) { + node.left = new TreeNode(Integer.parseInt(elements[index])); + queue.offer(node.left); + } + index++; + if (!elements[index].equalsIgnoreCase("null")) { + node.right = new TreeNode(Integer.parseInt(elements[index])); + queue.offer(node.right); + } + index++; + } + List> list = levelOrder(root); + for (List level : list) { + System.out.println(level); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static List> levelOrder(TreeNode root) { + List> res = new LinkedList<>(); + if (root == null) return res; + Queue queue = new LinkedList<>(); + queue.offer(root); + while (!queue.isEmpty()) { + List list = new LinkedList<>(); + int size = queue.size(); + for (int i = 0; i < size; i++) { + TreeNode node = queue.poll(); + list.add(node.val); + if (node.left != null) queue.offer(node.left); + if (node.right != null) queue.offer(node.right); + } + res.add(list); + } + return res; + } +} diff --git a/src/com/dsa/trees/TreeNode.java b/src/com/dsa/trees/TreeNode.java new file mode 100644 index 0000000..2748a36 --- /dev/null +++ b/src/com/dsa/trees/TreeNode.java @@ -0,0 +1,11 @@ +package com.dsa.trees; + +public class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode() {} + TreeNode(int x) { + val = x; + } +}