Heim >Backend-Entwicklung >C++ >Drucken Sie in der C-Sprache die Blattknoten einer bestimmten Ebene
Die Aufgabe besteht darin, Blattknoten eines Binärbaums auf einer bestimmten Ebene k zu drucken, die vom Benutzer angegeben wird.
Blattknoten sind die Endknoten, deren linker und rechter Zeiger NULL ist, was bedeutet, dass dieser bestimmte Knoten kein übergeordneter Knoten ist.
Input : 11 22 33 66 44 88 77 Output : 88 77
Hier stellt k die Ebene des Baums dar, die gedruckt werden muss. Die hier verwendete Methode besteht darin, jeden Knoten zu durchlaufen und zu prüfen, ob der Knoten Zeiger hat. Selbst wenn es nur einen Zeiger gibt, der links oder rechts oder beides anzeigt, kann dieser bestimmte Knoten kein Blattknoten sein.
Verwenden Sie die hierarchische Traversierungstechnik, um jeden Knoten rekursiv zu durchlaufen, beginnend links, dann beim Wurzelknoten und schließlich rechts.
Der folgende Code zeigt die C-Sprachimplementierung des angegebenen Algorithmus.
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; }
Wenn wir das obige Programm ausführen, wird die folgende Ausgabe generiert.
leaf nodes are: 88 77
Das obige ist der detaillierte Inhalt vonDrucken Sie in der C-Sprache die Blattknoten einer bestimmten Ebene. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!