Dalam bahasa C, cetak pandangan kanan pokok binari
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.
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
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
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
OutputJika kita menjalankan program di atas, ia akan menghasilkan output berikut. #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; }
right view of a binary tree is : 10 93 57 88
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Jenis nilai pulangan fungsi bahasa C termasuk int, float, double, char, void dan jenis penunjuk. Int digunakan untuk mengembalikan bilangan bulat, terapung dan dua kali digunakan untuk mengembalikan terapung, dan char mengembalikan aksara. Kekosongan bermaksud bahawa fungsi tidak mengembalikan sebarang nilai. Jenis penunjuk mengembalikan alamat memori, berhati -hati untuk mengelakkan kebocoran ingatan. Struktur atau konsortium boleh mengembalikan pelbagai data yang berkaitan.

F Fungsi bahasa adalah blok kod yang boleh diguna semula. Mereka menerima input, melakukan operasi, dan hasil pulangan, yang secara modular meningkatkan kebolehgunaan dan mengurangkan kerumitan. Mekanisme dalaman fungsi termasuk parameter lulus, pelaksanaan fungsi, dan nilai pulangan. Seluruh proses melibatkan pengoptimuman seperti fungsi dalam talian. Fungsi yang baik ditulis mengikut prinsip tanggungjawab tunggal, bilangan parameter kecil, penamaan spesifikasi, dan pengendalian ralat. Penunjuk yang digabungkan dengan fungsi dapat mencapai fungsi yang lebih kuat, seperti mengubahsuai nilai pembolehubah luaran. Pointer fungsi meluluskan fungsi sebagai parameter atau alamat kedai, dan digunakan untuk melaksanakan panggilan dinamik ke fungsi. Memahami ciri dan teknik fungsi adalah kunci untuk menulis program C yang cekap, boleh dipelihara, dan mudah difahami.

Kaedah untuk mencari pembahagi umum yang paling baik dan elegan dalam bahasa C: menggunakan bahagian fasa untuk menyelesaikan dengan sentiasa membahagikan selebihnya sehingga selebihnya adalah 0. Dua kaedah pelaksanaan disediakan: rekursi dan lelaran adalah ringkas dan jelas, dan pelaksanaan berulang lebih tinggi dan lebih stabil. Beri perhatian untuk mengendalikan nombor negatif dan 0s, dan pertimbangkan pengoptimuman prestasi, tetapi bahagian fasa itu sendiri cukup cekap.

Fungsi bahasa C adalah asas untuk modularization kod dan bangunan program. Mereka terdiri daripada pengisytiharan (tajuk fungsi) dan definisi (badan fungsi). Bahasa C menggunakan nilai untuk lulus parameter secara lalai, tetapi pembolehubah luaran juga boleh diubahsuai menggunakan lulus alamat. Fungsi boleh mempunyai atau tidak mempunyai nilai pulangan, dan jenis nilai pulangan mestilah selaras dengan perisytiharan. Penamaan fungsi harus jelas dan mudah difahami, menggunakan nomenclature unta atau garis bawah. Ikuti prinsip tanggungjawab tunggal dan pastikan kesederhanaan fungsi untuk meningkatkan kebolehkerjaan dan kebolehbacaan.

F Fungsi bahasa adalah blok kod yang boleh diguna semula, menerima parameter untuk pemprosesan, dan hasil pulangan. Ia sama dengan pisau tentera Swiss, berkuasa dan memerlukan penggunaan yang teliti. Fungsi termasuk unsur -unsur seperti menentukan format, parameter, nilai pulangan, dan badan fungsi. Penggunaan lanjutan termasuk penunjuk fungsi, fungsi rekursif, dan fungsi panggil balik. Kesalahan umum adalah jenis ketidakcocokan dan lupa untuk mengisytiharkan prototaip. Kemahiran penyahpepijatan termasuk pembolehubah percetakan dan menggunakan debugger. Pengoptimuman prestasi menggunakan fungsi dalam talian. Reka bentuk fungsi harus mengikuti prinsip tanggungjawab tunggal. Kemahiran dalam fungsi bahasa C dapat meningkatkan kecekapan pengaturcaraan dan kualiti kod.

Parameter penunjuk fungsi bahasa C secara langsung mengendalikan kawasan memori yang diluluskan oleh pemanggil, termasuk petunjuk kepada bilangan bulat, rentetan, atau struktur. Apabila menggunakan parameter penunjuk, anda perlu berhati -hati untuk mengubah suai memori yang ditunjuk oleh penunjuk untuk mengelakkan kesilapan atau masalah ingatan. Untuk penunjuk ganda ke rentetan, mengubah suai penunjuk itu sendiri akan membawa kepada menunjuk kepada rentetan baru, dan pengurusan ingatan perlu diberi perhatian. Apabila mengendalikan parameter penunjuk kepada struktur atau tatasusunan, anda perlu teliti memeriksa jenis dan sempadan penunjuk untuk mengelakkan akses luar.

Unsur -unsur utama definisi fungsi C termasuk: jenis pulangan (menentukan nilai yang dikembalikan oleh fungsi), nama fungsi (mengikuti spesifikasi penamaan dan menentukan skop), senarai parameter (menentukan jenis parameter, kuantiti dan pesanan yang diterima oleh fungsi) dan badan fungsi (melaksanakan logik fungsi). Adalah penting untuk menjelaskan makna dan hubungan halus unsur -unsur ini, dan boleh membantu pemaju mengelakkan "lubang" dan menulis kod yang lebih cekap dan elegan.

Penunjuk fungsi adalah penunjuk kepada fungsi, dan fungsi penunjuk adalah fungsi yang mengembalikan penunjuk. Penunjuk fungsi menunjukkan fungsi, digunakan untuk memilih dan melaksanakan fungsi yang berbeza; fungsi penunjuk mengembalikan penunjuk kepada pembolehubah, tatasusunan atau fungsi lain; Apabila menggunakan penunjuk fungsi, perhatikan pemadanan parameter dan memeriksa nilai null penunjuk; Apabila menggunakan fungsi penunjuk, perhatikan pengurusan ingatan dan memori yang diperuntukkan secara dinamik; Memahami perbezaan dan ciri -ciri kedua -dua untuk mengelakkan kekeliruan dan kesilapan.
