Given a **binary tree**, our task is to print the nodes whose height is a prime number starting from the root node.

**Examples:**

Input:1 / \ 2 3 / \ 4 5Output:4 5Explanation:For this tree: Height of Node 1 - 0, Height of Node 2 - 1, Height of Node 3 - 1, Height of Node 4 - 2, Height of Node 5 - 2. Hence, the nodes whose height is a prime number are 4, and 5.Input:1 / \ 2 5 / \ 3 4Output:3 4Explanation:For this tree: Height of Node 1 - 0, Height of Node 2 - 1, Height of Node 3 - 2, Height of Node 4 - 2, Height of Node 5 - 1. Hence, the nodes whose height is a prime number are 3, and 4.

**Approach:** To solve the problem mentioned above,

- We have to perform
**Depth First Search(DFS)**on the tree and for every node, store the height of every node as we move down the tree. - Iterate over the height array of each node and check if it prime or not.
- If yes then print the node else ignore it.

Below is the implementation of the above approach:

`// C++ implementation of nodes ` `// at prime height in the given tree ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `#define MAX 100000 ` ` ` `vector<` `int` `> graph[MAX + 1]; ` ` ` `// To store Prime Numbers ` `vector<` `bool` `> Prime(MAX + 1, ` `true` `); ` ` ` `// To store height of each node ` `int` `height[MAX + 1]; ` ` ` `// Function to find the ` `// prime numbers till 10^5 ` `void` `SieveOfEratosthenes() ` `{ ` ` ` ` ` `int` `i, j; ` ` ` `Prime[0] = Prime[1] = ` `false` `; ` ` ` `for` `(i = 2; i * i <= MAX; i++) { ` ` ` ` ` `// Traverse all multiple of i ` ` ` `// and make it false ` ` ` `if` `(Prime[i]) { ` ` ` ` ` `for` `(j = 2 * i; j < MAX; j += i) { ` ` ` `Prime[j] = ` `false` `; ` ` ` `} ` ` ` `} ` ` ` `} ` `} ` ` ` `// Function to perform dfs ` `void` `dfs(` `int` `node, ` `int` `parent, ` `int` `h) ` `{ ` ` ` `// Store the height of node ` ` ` `height[node] = h; ` ` ` ` ` `for` `(` `int` `to : graph[node]) { ` ` ` `if` `(to == parent) ` ` ` `continue` `; ` ` ` `dfs(to, node, h + 1); ` ` ` `} ` `} ` ` ` `// Function to find the nodes ` `// at prime height ` `void` `primeHeightNode(` `int` `N) ` `{ ` ` ` `// To precompute prime number till 10^5 ` ` ` `SieveOfEratosthenes(); ` ` ` ` ` `for` `(` `int` `i = 1; i <= N; i++) { ` ` ` `// Check if height[node] is prime ` ` ` `if` `(Prime[height[i]]) { ` ` ` `cout << i << ` `" "` `; ` ` ` `} ` ` ` `} ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `// Number of nodes ` ` ` `int` `N = 5; ` ` ` ` ` `// Edges of the tree ` ` ` `graph[1].push_back(2); ` ` ` `graph[1].push_back(3); ` ` ` `graph[2].push_back(4); ` ` ` `graph[2].push_back(5); ` ` ` ` ` `dfs(1, 1, 0); ` ` ` ` ` `primeHeightNode(N); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

4 5

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Relationship between number of nodes and height of binary tree
- Height of a complete binary tree (or Heap) with N nodes
- Find height of a special binary tree whose leaf nodes are connected
- Print middle level of perfect binary tree without finding height
- Print the nodes with a prime degree in given Prufer sequence of a Tree
- Count of nodes in a Binary Tree whose immediate children are co-prime
- Count of nodes in a Binary Tree whose child is its prime factors
- Print all internal nodes of a Binary tree
- Print all nodes between two given levels in Binary Tree
- Print all full nodes in a Binary Tree
- Print Nodes in Top View of Binary Tree
- Print nodes in the Top View of Binary Tree | Set 3
- Print all nodes in a binary tree having K leaves
- Print the nodes of Binary Tree having a grandchild
- Print nodes in top view of Binary Tree | Set 2
- Print path between any two nodes in a Binary Tree
- Print path between any two nodes in a Binary Tree | Set 2
- Print all even nodes of Binary Search Tree
- Print the nodes having exactly one child in a Binary tree
- Print Levels of all nodes in a Binary Tree

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.