diff --git a/GeeksForGeeks/May/03-5-24/GFG.java b/GeeksForGeeks/May/03-5-24/GFG.java new file mode 100644 index 0000000..58aacc4 --- /dev/null +++ b/GeeksForGeeks/May/03-5-24/GFG.java @@ -0,0 +1,139 @@ +//{ 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; + } + + 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 X[] = br.readLine().trim().split(" "); + int k = Integer.parseInt(X[0]); + String s = br.readLine(); + Node root = buildTree(s); + Tree g = new Tree(); + ArrayList nodes = g.Kdistance(root,k); + for(int i = 0;i Kdistance(Node root, int k) + { + // Your code here + ArrayList list = new ArrayList<>(); + if(root == null || k < 0){ + return list; + } + if(k == 0){ + System.out.print(root.data +" "); + //list.add(root.data); + } + + Kdistance(root.left, k-1); + Kdistance(root.right,k-1); + + return list; + } +} diff --git a/GeeksForGeeks/May/03-5-24/README.md b/GeeksForGeeks/May/03-5-24/README.md new file mode 100644 index 0000000..722dfdc --- /dev/null +++ b/GeeksForGeeks/May/03-5-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(n) +Space complexity - O(h) diff --git a/LeetCode/May/03-5-24/README.md b/LeetCode/May/03-5-24/README.md new file mode 100644 index 0000000..9567f26 --- /dev/null +++ b/LeetCode/May/03-5-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(n) +Space complexity - O(1) diff --git a/LeetCode/May/03-5-24/Solution.java b/LeetCode/May/03-5-24/Solution.java new file mode 100644 index 0000000..29d8c9e --- /dev/null +++ b/LeetCode/May/03-5-24/Solution.java @@ -0,0 +1,18 @@ +class Solution { + public int compareVersion(String version1, String version2) { + String[] levels1 = version1.split("\\."); + String[] levels2 = version2.split("\\."); + int length = Math.max(levels1.length, levels2.length); + + for (int i = 0; i < length; ++i) + { + Integer v1 = i < levels1.length ? Integer.parseInt(levels1[i]) : 0; + Integer v2 = i < levels2.length ? Integer.parseInt(levels2[i]) : 0; + int compare = v1.compareTo(v2); + if (compare != 0) + return compare; + } + + return 0; + } +}