Heim  >  Artikel  >  Backend-Entwicklung  >  Drucken Sie in der C-Sprache die Blattknoten einer bestimmten Ebene

Drucken Sie in der C-Sprache die Blattknoten einer bestimmten Ebene

王林
王林nach vorne
2023-08-25 14:17:12971Durchsuche

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.

Die chinesische Übersetzung von Beispiel

lautet:

Beispiel

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

Drucken Sie in der C-Sprache die Blattknoten einer bestimmten Ebene

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.

Die chinesische Übersetzung des 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

Beispiel

lautet:

Beispiel

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;
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen