Rumah > pembangunan bahagian belakang > C++ > Cetak paparan kiri pokok binari dalam bahasa C

Cetak paparan kiri pokok binari dalam bahasa C

WBOY
Lepaskan: 2023-09-03 13:25:05
ke hadapan
1465 orang telah melayarinya

Tugasnya adalah untuk mencetak nod kiri pokok binari yang diberikan. Mula-mula, pengguna akan memasukkan data, dengan itu menjana pokok binari, dan kemudian mencetak pandangan kiri pokok yang terhasil.

Setiap nod boleh mempunyai maksimum 2 nod anak jadi program ini mesti mengulangi hanya penunjuk kiri yang dikaitkan dengan nod

Jika penunjuk kiri tidak batal bermakna ia akan mempunyai beberapa data atau penuding yang dikaitkan dengannya jika tidak, ia akan menjadi kiri kanak-kanak untuk dicetak dan dipaparkan sebagai output.

Contoh
Input : 1 0 3 2 4
Output : 1 0 2
Salin selepas log masuk

Cetak paparan kiri pokok binari dalam bahasa C

Di sini, nod oren mewakili pandangan kiri pokok binari.

Dalam graf yang diberikan, nod dengan data 1 ialah nod akar, jadi ia akan dicetak, bukannya pergi ke nod anak kiri, ia akan mencetak 0, kemudian ia akan pergi ke 3 dan mencetak nod anak kirinya, Iaitu 2.

Kita boleh menggunakan kaedah rekursif untuk menyimpan tahap nod dan berulang kali dipindahkan ke

Kod di bawah menunjukkan pelaksanaan C bagi algoritma yang diberikan

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 left_view(struct node* root, int level, int* highest_level)
      IF root = NULL
         Exit
      End
      IF *highest_level < level
         Print root->data
         Set *highest_level = level
      End
      Recursively call left_view(root->left, level + 1, highest_level)
      Recursively call left_view(root->right, level + 1, highest_level)
   Step 4 -> Declare Function void left(struct node* root)
      Set int highest_level = 0
      Call left_view(root, 1, &highest_level)
   Step 5-> In main()
      Call New passing value user want to insert as struct node* root = New(1)
      Call left(root)
STOP
Salin selepas log masuk

Contoh

#include <stdio.h>
#include <stdlib.h>
//create a structure of a node
struct node {
   int data;
   struct node *left, *right; //this pointer will point to the nodes attached with a node
};
struct node* New(int new_data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   //allocating memory to a pointer    dynamically
   temp->data = new_data;
   temp->left = temp->right = NULL;
   return temp;
}
void left_view(struct node* root, int level, int* highest_level) {
   if (root == NULL) //if there is no node that means no data
   return;
   // this function will retrun the root node if there is only root node in a tree
   if (*highest_level < level) {
      printf("%d\t", root->data);
      *highest_level = level;
   }
   // Recursive function
   left_view(root->left, level + 1, highest_level);
   left_view(root->right, level + 1, highest_level);
}
void left(struct node* root) {
   int highest_level = 0;
   left_view(root, 1, &highest_level);
}
int main() {
   printf("left view of a binary tree is : ");
   struct node* root = New(1);
   root->left = New(0);
   root->right = New(3);
   root->right->left = New(2);
   root->right->right = New(4);
   left(root);
   return 0;
}
Salin selepas log masuk

Output

Jika kita menjalankan program di atas

ia Output berikut akan dihasilkan. rreeee🎜

Atas ialah kandungan terperinci Cetak paparan kiri pokok binari dalam bahasa C. 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