ট্রি ট্রাভার্সাল হল গ্রাফ ট্রাভার্সালের একটি ফর্ম। এটা ঠিক একবার গাছের প্রতিটি নোড চেক বা মুদ্রণ জড়িত. একটি বাইনারি সার্চ ট্রির ইনঅর্ডার ট্রাভার্সাল ট্রির প্রতিটি নোডকে ক্রমানুসারে পরিদর্শন করে (বাম, রুট, ডান)।
একটি বাইনারি গাছের ইনঅর্ডার ট্রাভার্সালের একটি উদাহরণ নিম্নরূপ।
একটি বাইনারি গাছ নিম্নরূপ দেওয়া হয়৷
ইনঅর্ডার ট্রাভার্সাল হল:1 4 5 6 8
ইন-অর্ডার রিকার্সিভ ট্রাভার্সাল করার প্রোগ্রামটি নিম্নরূপ দেওয়া হয়েছে।
উদাহরণ
#include<iostream> using namespace std; struct node { int data; struct node *left; struct node *right; }; struct node *createNode(int val) { struct node *temp = (struct node *)malloc(sizeof(struct node)); temp->data = val; temp->left = temp->right = NULL; return temp; } void inorder(struct node *root) { if (root != NULL) { inorder(root->left); cout<<root->data<<" "; inorder(root->right); } } struct node* insertNode(struct node* node, int val) { if (node == NULL) return createNode(val); if (val < node->data) node->left = insertNode(node->left, val); else if (val > node->data) node->right = insertNode(node->right, val); return node; } int main() { struct node *root = NULL; root = insertNode(root, 4); insertNode(root, 5); insertNode(root, 2); insertNode(root, 9); insertNode(root, 1); insertNode(root, 3); cout<<"In-Order traversal of the Binary Search Tree is: "; inorder(root); return 0; }
আউটপুট
In-Order traversal of the Binary Search Tree is: 1 2 3 4 5 9
উপরের প্রোগ্রামে, স্ট্রাকচার নোড একটি গাছের নোড তৈরি করে। এই কাঠামোটি একটি স্ব-উল্লেখযোগ্য কাঠামো কারণ এতে স্ট্রাকট নোড টাইপের পয়েন্টার রয়েছে। এই কাঠামোটি নিম্নরূপ দেখানো হয়েছে।
struct node { int data; struct node *left; struct node *right; };
CreateNode() ফাংশন একটি নোড টেম্প তৈরি করে এবং malloc ব্যবহার করে মেমরি বরাদ্দ করে। ডাটা ভ্যালু টেম্পের ডাটাতে সংরক্ষণ করা হয়। NULL তাপমাত্রার বাম এবং ডান পয়েন্টারে সংরক্ষণ করা হয়। এটি নিম্নলিখিত কোড স্নিপেট দ্বারা প্রদর্শিত হয়৷
৷struct node *createNode(int val) { struct node *temp = (struct node *)malloc(sizeof(struct node)); temp->data = val; temp->left = temp->right = NULL; return temp; }
ফাংশন inorder() আর্গুমেন্ট হিসাবে বাইনারি গাছের রুট নেয় এবং গাছের উপাদানগুলিকে inorder এ প্রিন্ট করে। এটি একটি পুনরাবৃত্ত ফাংশন। এটি নিম্নলিখিত কোড ব্যবহার করে প্রদর্শিত হয়।
void inorder(struct node *root) { if (root != NULL) { inorder(root->left); cout<<root->data<<" "; inorder(root->right); } }
insertNode() ফাংশনটি তার সঠিক অবস্থানে বাইনারি ট্রিতে প্রয়োজনীয় মান সন্নিবেশ করে। যদি নোডটি NULL হয়, তাহলে createNode বলা হয়। অন্যথায়, নোডের জন্য সঠিক অবস্থানটি গাছে পাওয়া যায়। এটি নিম্নলিখিত কোড স্নিপেটে লক্ষ্য করা যেতে পারে।
struct node* insertNode(struct node* node, int val) { if (node == NULL) return createNode(val); if (val < node->data) node->left = insertNode(node->left, val); else if (val > node->data) node->right = insertNode(node->right, val); return node; }
main() ফাংশনে, রুট নোডকে প্রথমে NULL হিসাবে সংজ্ঞায়িত করা হয়। তারপর প্রয়োজনীয় মান সহ সমস্ত নোডগুলি বাইনারি অনুসন্ধান গাছে ঢোকানো হয়। এটি নীচে দেখানো হয়েছে৷
৷struct node *root = NULL; root = insertNode(root, 4); insertNode(root, 5); insertNode(root, 2); insertNode(root, 9); insertNode(root, 1); insertNode(root, 3);
অবশেষে, ফাংশন inorder()টিকে গাছের রুট নোড ব্যবহার করে বলা হয় এবং সমস্ত গাছের মানগুলি ইনঅর্ডারে প্রদর্শিত হয়। এটি নীচে দেওয়া হল৷
৷cout<<"In-Order traversal of the Binary Search Tree is: "; inorder(root);