Find n-th node in Preorder traversal of a Binary Tree in C++

C++Server Side ProgrammingProgramming

In this problem, we are given a binary tree and an integer N. The task is to find the n-th node in Preorder traversal of a Binary Tree.

A binary tree has a special condition that each node can have a maximum of two children.

Traversal is a process to visit all the nodes of a tree and may print their values too.

Let’s take an example to understand the problem,

Input

N = 6

Output

6

Explanation

Pre order traversal of tree : 1, 2, 4, 5, 3, 6, 7

Solution Approach

The idea is to use the pre-order traversal of the binary tree which is done by using recursive call. In each call we will visit the root node then call preOrder() for left subtree first and then call preOrder(). During this traversal, we will count the number of nodes and print the node for which the count is N.

Program to illustrate the working of our solution,

Example

 Live Demo

#include <iostream>
using namespace std;
struct Node {
   int data;
   Node *left, *right;
};
struct Node* createNode(int item){
   Node* temp = new Node;
   temp->data = item;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
void findPreOrderTraversalRec(struct Node* root, int N){
   static int nodeCount = 0;
   if (root == NULL)
      return;
   if (nodeCount <= N) {
      nodeCount++;
      if (nodeCount == N)
         cout << root->data;
         findPreOrderTraversalRec(root->left, N);
         findPreOrderTraversalRec(root->right, N);
      }
   }
   int main() {
      struct Node* root = createNode(1);
      root->left = createNode(2);
      root->right = createNode(3);
      root->left->left = createNode(4);
      root->left->right = createNode(5);
      root->right->left = createNode(6);
      root->right->right = createNode(7);
      int N = 6;
      cout<<N<<"th node in preorder traversal is ";
      findPreOrderTraversalRec(root, N);
      return 0;
}

Output

6th node in preorder traversal is 6
raja
Published on 13-Mar-2021 12:00:57
Advertisements