diff --git a/GeeksForGeeks/March/18-3-24/GFG.java b/GeeksForGeeks/March/18-3-24/GFG.java new file mode 100644 index 0000000..9d90807 --- /dev/null +++ b/GeeksForGeeks/March/18-3-24/GFG.java @@ -0,0 +1,150 @@ +//{ Driver Code Starts +//Initial Template for Java + +import java.util.LinkedList; +import java.util.Queue; +import java.io.*; +import java.util.*; + +class Node{ + int data; + Node left; + Node right; + Node(int data){ + this.data = data; + left=null; + right=null; + } +} + +class GfG { + + static Node buildTree(String str){ + + if(str.length()==0 || str.charAt(0)=='N'){ + return null; + } + + String ip[] = str.split(" "); + // Create the root of the tree + Node root = new Node(Integer.parseInt(ip[0])); + // Push the root to the queue + + Queue queue = new LinkedList<>(); + + queue.add(root); + // Starting from the second element + + int i = 1; + while(queue.size()>0 && i < ip.length) { + + // Get and remove the front of the queue + Node currNode = queue.peek(); + queue.remove(); + + // Get the current node's value from the string + String currVal = ip[i]; + + // If the left child is not null + if(!currVal.equals("N")) { + + // Create the left child for the current node + currNode.left = new Node(Integer.parseInt(currVal)); + // Push it to the queue + queue.add(currNode.left); + } + + // For the right child + i++; + if(i >= ip.length) + break; + + currVal = ip[i]; + + // If the right child is not null + if(!currVal.equals("N")) { + + // Create the right child for the current node + currNode.right = new Node(Integer.parseInt(currVal)); + + // Push it to the queue + queue.add(currNode.right); + } + i++; + } + + return root; + } + static void printInorder(Node root) + { + if(root == null) + return; + + printInorder(root.left); + System.out.print(root.data+" "); + + printInorder(root.right); + } + + public static void main (String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int t=Integer.parseInt(br.readLine()); + + while(t > 0){ + String s = br.readLine(); + Node root = buildTree(s); + Solution g = new Solution(); + ArrayList res = g.levelOrder(root); + for (Integer num : res) System.out.print(num + " "); + System.out.println(); + t--; + + } + } + +} + + +// } Driver Code Ends + + +//User function Template for Java + +/* +class Node +{ + int data; + Node left, right; + + Node(int item) + { + data = item; + left = right = null; + } +} +*/ +class Solution +{ + //Function to return the level order traversal of a tree. + static ArrayList levelOrder(Node root) + { + // Your code here + Queue queue = new LinkedList(); + ArrayList ans = new ArrayList<>(); + queue.add(root); + while (!queue.isEmpty()) + { + Node tempNode = queue.poll(); + ans.add(tempNode.data); + + if (tempNode.left != null) + queue.add(tempNode.left); + + if (tempNode.right != null) + queue.add(tempNode.right); + } + + return ans; + } +} diff --git a/GeeksForGeeks/March/18-3-24/README.md b/GeeksForGeeks/March/18-3-24/README.md new file mode 100644 index 0000000..7384c4b --- /dev/null +++ b/GeeksForGeeks/March/18-3-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(n) +Space complexity - O(n) diff --git a/LeetCode/March/18-3-24/README.md b/LeetCode/March/18-3-24/README.md new file mode 100644 index 0000000..7b1166a --- /dev/null +++ b/LeetCode/March/18-3-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(n * logn) +Space complexity - O(1) diff --git a/LeetCode/March/18-3-24/Solution.java b/LeetCode/March/18-3-24/Solution.java new file mode 100644 index 0000000..c0863e4 --- /dev/null +++ b/LeetCode/March/18-3-24/Solution.java @@ -0,0 +1,24 @@ +class Solution +{ + public int findMinArrowShots(int[][] points) + { + if (points == null || points.length == 0) + return 0; + + Arrays.sort(points, (a, b) -> Integer.compare(a[1], b[1])); + + int arrows = 1; + int end = points[0][1]; + + for (int i = 1; i < points.length; i++) + { + if (points[i][0] > end) + { + arrows++; + end = points[i][1]; + } + } + + return arrows; + } +}