Rumah > pembangunan bahagian belakang > C++ > Dalam bahasa C, cetak nod daun pada tahap tertentu

Dalam bahasa C, cetak nod daun pada tahap tertentu

王林
Lepaskan: 2023-08-25 14:17:12
ke hadapan
1080 orang telah melayarinya

Tugas ini melibatkan mencetak nod daun pokok binari pada tahap k tertentu yang ditentukan oleh pengguna.

Nod daun ialah nod hujung yang penunjuk kiri dan kanannya adalah NULL yang bermaksud nod tertentu itu bukan nod induk.

Terjemahan Cina Contoh

ialah:

Contoh

Input : 11 22 33 66 44 88 77
Output : 88 77
Salin selepas log masuk

Dalam bahasa C, cetak nod daun pada tahap tertentu

Di sini, k mewakili tahap pokok yang perlu dicetak. Kaedah yang digunakan di sini adalah untuk menggelung melalui setiap nod dan menyemak sama ada nod itu mempunyai sebarang penunjuk. Walaupun hanya terdapat satu penunjuk, menunjukkan kiri atau kanan atau kedua-duanya, nod tertentu itu tidak boleh menjadi nod daun.

Gunakan teknik traversal hierarki untuk melintasi setiap nod secara rekursif, bermula dari kiri, kemudian nod akar, dan akhirnya kanan.

Kod di bawah menunjukkan pelaksanaan bahasa C bagi algoritma yang diberikan

Terjemahan bahasa Cina bagi algoritma

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
Salin selepas log masuk

Contoh

ialah:

Contoh

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;
}
Salin selepas log masuk

Output

Jika kita menjalankan program di atas, ia akan menjana keluaran berikut.

rreeee

Atas ialah kandungan terperinci Dalam bahasa C, cetak nod daun pada tahap tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan