Rumah > pembangunan bahagian belakang > C++ > Dalam bahasa C, cetak pandangan kanan pokok binari

Dalam bahasa C, cetak pandangan kanan pokok binari

WBOY
Lepaskan: 2023-09-16 23:13:01
ke hadapan
755 orang telah melayarinya

Tugasnya adalah untuk mencetak nod kanan pokok binari yang diberikan. Mula-mula pengguna akan memasukkan data untuk mencipta pokok binari dan kemudian mencetak pandangan kanan pokok yang terhasil.

Dalam bahasa C, cetak pandangan kanan pokok binari

Imej di atas menunjukkan pokok binari yang dibuat menggunakan nod 10, 42, 93, 14, 35, 96, 57 dan 88, dipilih dan dipaparkan dalam Nod di sebelah kanan pokok. Contohnya, 10, 93, 57, dan 88 ialah nod paling kanan bagi pokok binari.

Contoh

Input : 10 42 93 14 35 96 57 88
Output : 10 93 57 88
Salin selepas log masuk

Setiap nod mempunyai dua penunjuk, penunjuk kiri dan penunjuk kanan. Menurut soalan ini, program hanya perlu melintasi nod yang betul. Oleh itu, anak kiri nod tidak perlu dipertimbangkan.

Pandangan yang betul menyimpan semua nod yang merupakan nod terakhir tahap mereka. Oleh itu, kita hanya boleh menggunakan kaedah rekursif untuk menyimpan dan mengakses nod sedemikian rupa sehingga subpokok kanan dilalui dahulu dan kemudian subpokok kiri. Apabila program mengesan bahawa tahap nod lebih besar daripada tahap nod sebelumnya, nod sebelumnya dipaparkan kerana ia akan menjadi nod terakhir dalam tahapnya.

Kod di bawah menunjukkan pelaksanaan bahasa 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 item
      Declare temp variable of node using malloc
      Set temp->data = item
      Set temp->left = temp->right = NULL
      return temp
   step 3 -> Declare Function void right_view(struct node *root, int level, int *end_level)
      IF root = NULL
         Return
      IF *end_level < level
         Print root->data
         Set *end_level = level
         Call right_view(root->right, level+1, end_level)
         Call right_view(root->left, level+1, end_level)
   Step 4 -> Declare Function void right(struct node *root)
      Set int level = 0
      Call right_view(root, 1, &level)
   Step 5 -> In Main()
      Pass the values for the tree nodes using struct node *root = New(10)
      Call right(root)
STOP
Salin selepas log masuk

Contoh

Terjemahan bahasa Cina ialah: #🎜 🎜#Contoh

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node *left, *right;
};
struct node *New(int item) {
   struct node *temp = (struct node *)malloc(sizeof(struct node));
   temp->data = item;
   temp->left = temp->right = NULL;
   return temp;
}
void right_view(struct node *root, int level, int *end_level) {
   if (root == NULL) return;
   if (*end_level < level) {
      printf("%d\t", root->data);
      *end_level = level;
   }
   right_view(root->right, level+1, end_level);
   right_view(root->left, level+1, end_level);
}
void right(struct node *root) {
   int level = 0;
   right_view(root, 1, &level);
}
int main() {
   printf("right view of a binary tree is : ");
   struct node *root = New(10);
   root->left = New(42);
   root->right = New(93);
   root->left->left = New(14);
   root->left->right = New(35);
   root->right->left = New(96);
   root->right->right = New(57);
   root->right->left->right = New(88);
   right(root);
   return 0;
}
Salin selepas log masuk

Output

Jika kita menjalankan program di atas, ia akan menghasilkan output berikut.

right view of a binary tree is : 10 93 57 88
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam bahasa C, cetak pandangan kanan pokok binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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