diff --git a/GeeksForGeeks/February/8-2-24/GFG.java b/GeeksForGeeks/February/8-2-24/GFG.java new file mode 100644 index 0000000..289f516 --- /dev/null +++ b/GeeksForGeeks/February/8-2-24/GFG.java @@ -0,0 +1,158 @@ +//{ Driver Code Starts +//Initial Template for Java + +// INITIAL CODE +import java.util.*; +import java.lang.*; +import java.io.*; + +// A Binary Tree node +class Node{ + int data; + Node left; + Node right; + Node(int data){ + this.data = data; + left=null; + right=null; + } +} + +class Is_Leaves_At_Same_Level +{ + + 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; + } + + // driver function to test the above functions + 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(); + boolean b = g.check(root); + if(b == true) + System.out.println(1); + else + System.out.println(0); + t--; + } + } +} + +// } Driver Code Ends + + +//User function Template for Java + +/* A Binary Tree node +class Node +{ + int data; + Node left, right; + + Node(int item) + { + data = item; + left = right = null; + } +} +*/ + +class Leaf +{ + int leaflevel=0; +} + +class Solution +{ + Leaf mylevel = new Leaf(); + + boolean check(Node root) + { + // Your code here + int level = 0; + return checkUtil(root, level, mylevel); + } + + boolean checkUtil(Node node, int level, Leaf leafLevel) + { + // Base case + if (node == null) + return true; + + if (node.left == null && node.right == null) + { + if (leafLevel.leaflevel == 0) + { + leafLevel.leaflevel = level; + return true; + } + + return (level == leafLevel.leaflevel); + } + + return checkUtil(node.left, level + 1, leafLevel) + && checkUtil(node.right, level + 1, leafLevel); + } +} diff --git a/GeeksForGeeks/February/8-2-24/README.md b/GeeksForGeeks/February/8-2-24/README.md new file mode 100644 index 0000000..722dfdc --- /dev/null +++ b/GeeksForGeeks/February/8-2-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(n) +Space complexity - O(h) diff --git a/LeetCode/February/8-2-24/README.md b/LeetCode/February/8-2-24/README.md new file mode 100644 index 0000000..2345e3d --- /dev/null +++ b/LeetCode/February/8-2-24/README.md @@ -0,0 +1,2 @@ +Time complexity - O(log n) +Space complexity - O(n * logn) diff --git a/LeetCode/February/8-2-24/Solution.java b/LeetCode/February/8-2-24/Solution.java new file mode 100644 index 0000000..9059a24 --- /dev/null +++ b/LeetCode/February/8-2-24/Solution.java @@ -0,0 +1,16 @@ +class Solution +{ + public int numSquares(int n) + { + int[] dp = new int[n + 1]; + Arrays.fill(dp, n); + dp[0] = 0; + dp[1] = 1; + + for (int i = 2; i <= n; ++i) + for (int j = 1; j * j <= i; ++j) + dp[i] = Math.min(dp[i], dp[i - j * j] + 1); + + return dp[n]; + } +}