Print Leaf Nodes at a given Level - GeeksforGeeks

06 Aug, 2021
Given a Binary tree, print all the leaf nodes of a Binary tree at a given level L.Examples:
Input:    
           1
          /  \
         2    3
        /    /  \
       4    5    6
 level = 3

Output: 4 5 6

Input:    
             7
            /  \
           2    3
          / \    \
         4   9   10
                 /
                6
   level = 3

Output: 4 9
Approach: Recursively traverse the tree in a level order manner. If the current level is the same as the given level, then check whether the current node is a leaf node or not. If it is a leaf node then print it.Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ program to print all the// leaf nodes at a given level// in a Binary tree#include <bits/stdc++.h>using namespace std; // Binary tree nodestruct node {    struct node* left;    struct node* right;    int data;}; // Function to create a new// Binary nodestruct node* newNode(int data){    struct node* temp = new node;     temp->data = data;    temp->left = NULL;    temp->right = NULL;     return temp;} // Function to print Leaf Nodes at// a given levelvoid PrintLeafNodes(struct node* root, int level){    if (root == NULL)        return;     if (level == 1) {        if (root->left == NULL && root->right == NULL)            cout << root->data << " ";    }    else if (level > 1) {        PrintLeafNodes(root->left, level - 1);        PrintLeafNodes(root->right, level - 1);    }} // Driver codeint main(){    struct node* root = newNode(1);    root->left = newNode(2);    root->right = newNode(3);    root->left->left = newNode(6);    root->right->right = newNode(4);    root->left->left->left = newNode(8);    root->left->left->right = newNode(7);     int level = 4;     PrintLeafNodes(root, level);     return 0;}
// Java program to print all the// leaf nodes at a given level// in a Binary treeclass GFG{     // Binary tree node    static class node    {         node left;        node right;        int data;    };     // Function to create a new    // Binary node    static node newNode(int data)    {        node temp = new node();         temp.data = data;        temp.left = null;        temp.right = null;         return temp;    }     // Function to print Leaf Nodes at    // a given level    static void PrintLeafNodes(node root, int level)    {        if (root == null)        {            return;        }         if (level == 1)        {            if (root.left == null && root.right == null)            {                System.out.print(root.data + " ");            }         }        else if (level > 1)        {            PrintLeafNodes(root.left, level - 1);            PrintLeafNodes(root.right, level - 1);        }    }     // Driver code    public static void main(String[] args)    {        node root = newNode(1);        root.left = newNode(2);        root.right = newNode(3);        root.left.left = newNode(6);        root.right.right = newNode(4);        root.left.left.left = newNode(8);        root.left.left.right = newNode(7);         int level = 4;         PrintLeafNodes(root, level);    }} // This code contributed by Rajput-Ji
# Python3 program to print all the# leaf nodes at a given level# in a Binary tree # Binary tree nodeclass node:         def __init__(self, data):        self.left=None        self.right=None        self.data=data  # Function to create a new# Binary nodedef newNode(data):    return node(data)  # Function to print Leaf Nodes at# a given leveldef PrintLeafNodes(root, level):    if (root == None):        return      if (level == 1):        if (root.left == None and            root.right == None):            print(root.data, end = " ")         elif (level > 1):        PrintLeafNodes(root.left, level - 1)        PrintLeafNodes(root.right, level - 1)         if __name__=="__main__":         root=newNode(1)    root.left = newNode(2);    root.right = newNode(3);    root.left.left = newNode(6);    root.right.right = newNode(4);    root.left.left.left = newNode(8);    root.left.left.right = newNode(7);    level = 4;    PrintLeafNodes(root, level); # This code is contributed by rutvik_56
// C# program to print all the// leaf nodes at a given level// in a Binary treeusing System; class GFG{     // Binary tree node    public class node    {         public node left;        public node right;        public int data;    };     // Function to create a new    // Binary node    static node newNode(int data)    {        node temp = new node();         temp.data = data;        temp.left = null;        temp.right = null;         return temp;    }     // Function to print Leaf Nodes at    // a given level    static void PrintLeafNodes(node root, int level)    {        if (root == null)        {            return;        }         if (level == 1)        {            if (root.left == null && root.right == null)            {                Console.Write(root.data + " ");            }         }        else if (level > 1)        {            PrintLeafNodes(root.left, level - 1);            PrintLeafNodes(root.right, level - 1);        }    }     // Driver code    public static void Main(String[] args)    {        node root = newNode(1);        root.left = newNode(2);        root.right = newNode(3);        root.left.left = newNode(6);        root.right.right = newNode(4);        root.left.left.left = newNode(8);        root.left.left.right = newNode(7);         int level = 4;         PrintLeafNodes(root, level);    }} // This code has been contributed by 29AjayKumar
<script>     // JavaScript program to print all the    // leaf nodes at a given level    // in a Binary tree         // Binary tree node    class node    {        constructor(data) {           this.left = null;           this.right = null;           this.data = data;        }    }         // Function to create a new    // Binary node    function newNode(data)    {        let temp = new node(data);          temp.data = data;        temp.left = null;        temp.right = null;          return temp;    }      // Function to print Leaf Nodes at    // a given level    function PrintLeafNodes(root, level)    {        if (root == null)        {            return;        }          if (level == 1)        {            if (root.left == null && root.right == null)            {                document.write(root.data + " ");            }          }        else if (level > 1)        {            PrintLeafNodes(root.left, level - 1);            PrintLeafNodes(root.right, level - 1);        }    }         let root = newNode(1);    root.left = newNode(2);    root.right = newNode(3);    root.left.left = newNode(6);    root.right.right = newNode(4);    root.left.left.left = newNode(8);    root.left.left.right = newNode(7);     let level = 4;     PrintLeafNodes(root, level); </script>
8 7
 
Time Complexity:O(N) where N is the number of nodes in a binary tree.Auxiliary Space: O(N) 
Rajput-Ji
29AjayKumar
rutvik_56
mukesh07
pankajsharmagfg
Binary Tree
Data Structures
Tree
Data Structures
Tree
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Introduction to Tree Data Structure
TCS NQT Coding Sheet
Program to implement Singly Linked List in C++ using class
Hash Functions and list/types of Hash functions
Static Data Structure vs Dynamic Data Structure
Tree Traversals (Inorder, Preorder and Postorder)
Binary Tree | Set 1 (Introduction)
Level Order Binary Tree Traversal
AVL Tree | Set 1 (Insertion)
Inorder Tree Traversal without Recursion