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.
Input : 11 22 33 66 44 88 77 Output : 88 77
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é
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
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; }
Si nous exécutons le programme ci-dessus, il générera la sortie suivante.
leaf nodes are: 88 77
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!