diff --git a/Count Non-Leaf Nodes in Tree - GFG/count-non-leaf-nodes-in-tree.java b/Count Non-Leaf Nodes in Tree - GFG/count-non-leaf-nodes-in-tree.java new file mode 100644 index 0000000..36c4bca --- /dev/null +++ b/Count Non-Leaf Nodes in Tree - GFG/count-non-leaf-nodes-in-tree.java @@ -0,0 +1,132 @@ +//{ 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 tr=new Solution(); + int sum=tr.countNonLeafNodes(root); + System.out.println(sum); + } + } +} +// } Driver Code Ends + + +//User function Template for Java + +/*class Node +{ + int data; + Node left,right; + Node(int d){ + data=d; + left=right=null; + } +}*/ + +//function should return the count of total number of non leaf nodes in the tree. +class Solution +{ + int count=0; + int countNonLeafNodes(Node root) { + if(root.left!=null || root.right!=null) + { + count++; + if(root.left!=null) + countNonLeafNodes(root.left); + if(root.right!=null) + countNonLeafNodes(root.right); + } + return(count); + } +} \ No newline at end of file