Print Leaf Nodes at a given Level

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++
// 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
// Java program to print all the // leaf nodes at a given level // in a Binary tree class 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
# 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#
// C# program to print all the // leaf nodes at a given level // in a Binary tree using 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 |
Javascript
<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> |
Output
8 7
Complexity Analysis:
- Time Complexity: O(N) where N is the number of nodes in a binary tree.
- Auxiliary Space: O(N)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



