এই কাজটিতে একটি বাইনারি গাছের পাতার নোডগুলিকে প্রদত্ত লেভেল k-এ মুদ্রণ করা জড়িত যা ব্যবহারকারী দ্বারা নির্দিষ্ট করা হয়েছে৷
লিফ নোড হল শেষ নোড যার বাম এবং ডান পয়েন্টার হল NULL যার মানে সেই নির্দিষ্ট নোডটি প্যারেন্ট নোড নয়৷
উদাহরণ
Input : 11 22 33 66 44 88 77 Output : 88 77
এখানে, k একটি গাছের স্তর উপস্থাপন করে যা প্রিন্ট করা প্রয়োজন। এখানে ব্যবহৃত পদ্ধতিটি প্রতিটি নোডকে অতিক্রম করছে এবং নোডে কোনো পয়েন্টার আছে কিনা তা পরীক্ষা করা হচ্ছে। এমনকি যদি একটি পয়েন্টার থাকে যার অর্থ বাম বা ডান বা উভয়ই সেই নির্দিষ্ট নোডের চেয়ে লিফ নোড হতে পারে না।
লেভেল অর্ডার টেকনিক ব্যবহার করে প্রতিটি নোডকে বারবার ট্রাভার্স করা যাতে বাম → রুট → ডান থেকে শুরু করে নোডগুলি লেভেল অনুযায়ী ট্রাভার্স করা হয়।
নিচের কোডটি প্রদত্ত অ্যালগরিদমের সি বাস্তবায়ন দেখায়
অ্যালগরিদম
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
উদাহরণ
একটি নোডের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\n",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; }
আউটপুট
যদি আমরা উপরের প্রোগ্রামটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে।
leaf nodes are: 88 77