Home  >  Article  >  Backend Development  >  In C language, print the leaf nodes of a given level

In C language, print the leaf nodes of a given level

王林
王林forward
2023-08-25 14:17:12975browse

The task involves printing leaf nodes of a binary tree at given level k which is specified by the user.

Leaf nodes are the end nodes whose left and right pointer is NULL which means that particular node is not a parent node.

Example

’s Chinese translation is:

Example

Input : 11 22 33 66 44 88 77
Output : 88 77

In C language, print the leaf nodes of a given level

Here, k represents the level of the tree that needs to be printed . The method used here is to loop through each node and check if the node has any pointers. Even if there is only one pointer, indicating left or right or both, that particular node cannot be a leaf node.

Use hierarchical traversal techniques to recursively traverse each node, starting from the left, then the root node, and finally the right.

The following code shows the C language implementation of a given algorithm

Algorithm

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as new_data
      Declare temp variable of node using malloc
      Set temp->data = new_data
      Set temp->left = temp->right = NULL
      return temp
   Step 3 -> declare Function void leaf(struct node* root, int level)
      IF root = NULL
         Exit
      End
      IF level = 1
         IF root->left == NULL && root->right == NULL
            Print root->data
         End
      End
      ELSE IF level>1
         Call leaf(root->left, level - 1)
         Call leaf(root->right, level - 1)
      End
   Step 4-> In main()
      Set level = 4
      Call New passing value user want to insert as struct node* root = New(1)
      Call leaf(root,level)
STOP

Example

The Chinese translation is:

Example

include<stdio.h>
#include<stdlib.h>
//structre of a node defined
struct node {
   struct node* left;
   struct node* right;
   int data;
};
//structure to create a new node
struct node* New(int data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   temp->data = data;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
//function to found leaf node
void leaf(struct node* root, int level) {
   if (root == NULL)
      return;
   if (level == 1) {
      if (root->left == NULL && root->right == NULL)
      printf("%d</p><p>",root->data);
   } else if (level > 1) {
      leaf(root->left, level - 1);
      leaf(root->right, level - 1);
   }
}
int main() {
   printf("leaf nodes are: ");
   struct node* root = New(11);
   root->left = New(22);
   root->right = New(33);
   root->left->left = New(66);
   root->right->right = New(44);
   root->left->left->left = New(88);
   root->left->left->right = New(77);
   int level = 4;
   leaf(root, level);
   return 0;
}

Output

If we run the above program, it will generate the following output.

leaf nodes are: 88 77

The above is the detailed content of In C language, print the leaf nodes of a given level. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete