Maison > développement back-end > C++ > En langage C, imprimer les nœuds feuilles d'un niveau donné

En langage C, imprimer les nœuds feuilles d'un niveau donné

王林
Libérer: 2023-08-25 14:17:12
avant
1088 Les gens l'ont consulté

La tâche consiste à imprimer les nœuds feuilles d'un arbre binaire à un niveau k donné qui est spécifié par l'utilisateur.

Les nœuds feuilles sont les nœuds d'extrémité dont les pointeurs gauche et droit sont NULL, ce qui signifie que ce nœud particulier n'est pas un nœud parent.

La traduction chinoise de l'exemple

est :

Exemple

Input : 11 22 33 66 44 88 77
Output : 88 77
Copier après la connexion

En langage C, imprimer les nœuds feuilles dun niveau donné

Ici, k représente le niveau de l'arbre qui doit être imprimé. La méthode utilisée ici consiste à parcourir chaque nœud et à vérifier si le nœud possède des pointeurs. Même s'il n'y a qu'un seul pointeur, indiquant la gauche ou la droite ou les deux, ce nœud particulier ne peut pas être un nœud feuille.

Utilisez la technique de parcours hiérarchique pour parcourir récursivement chaque nœud, en commençant par la gauche, puis le nœud racine et enfin la droite.

Le code ci-dessous montre l'implémentation en langage C de l'algorithme donné

La traduction chinoise de l'algorithme

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
Copier après la connexion

Exemple

est :

Exemple

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;
}
Copier après la connexion

Sortie

Si nous exécutons le programme ci-dessus, il générera la sortie suivante.

leaf nodes are: 88 77
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal