কম্পিউটার টিউটোরিয়াল

ট্রির শেষ সারির বামপাশের মান C++-এ


ধরা যাক একটি বাইনারি ট্রি আছে। আমরা ট্রির শেষ সারির (last row) সবচেয়ে বামপাশের মান বের করব। যদি ট্রি নিচের মতো হয় −

ট্রির শেষ সারির বামপাশের মান C++-এ


তবে আউটপুট হবে 7, কারণ শেষ সারি হলো [7, 4], এবং বামপাশের উপাদান হলো 7।

সমাধানের ধাপগুলো −

  • প্রাথমিকভাবে ans এবং lvl ভেরিয়েবল 0 হিসেবে সংজ্ঞা করব

  • solve() নামে একটি মেথড সংজ্ঞা করব, যা ট্রি নোড এবং লেভেল নিবে, লেভেল প্রাথমিকভাবে 0। এটি নিচেরভাবে কাজ করবে −

  • যদি নোড null হয়, তবে রিটার্ন করব

  • যদি level > lvl হয়, তবে ans := নোডের মান এবং lvl := level

  • solve(নোডের বাম, level + 1)

  • solve(নোডের ডান, level + 1)

  • মেইন সেকশনে lvl := -1 সেট করব, solve(root) কল করব, এবং ans রিটার্ন করব

নিচের ইমপ্লিমেন্টেশন দেখুন −

উদাহরণ

#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){    cout << "[";    for(int i = 0; i<v.size(); i++){       cout << v[i] << ", ";    }    cout << "]"<<endl; } class TreeNode{    public:    int val;    TreeNode *left, *right;    TreeNode(int data){       val = data;       left = NULL;       right = NULL;    } }; void insert(TreeNode **root, int val){    queue<TreeNode*> q;    q.push(*root);    while(q.size()){       TreeNode *temp = q.front();       q.pop();       if(!temp->left){          if(val != NULL)           temp->left = new TreeNode(val);          else           temp->left = new TreeNode(0);          return;       } else {          q.push(temp->left);       }       if(!temp->right){          if(val != NULL)           temp->right = new TreeNode(val);          else           temp->right = new TreeNode(0);          return;       } else {          q.push(temp->right);       }    } } TreeNode *make_tree(vector<int> v){    TreeNode *root = new TreeNode(v[0]);    for(int i = 1; i<v.size(); i++){       insert(&root, v[i]);    }    return root; } class Solution {    public:    int ans;    int lvl;    void solve(TreeNode* node, int level = 0){       if(!node || node->val == 0) return;       if(level > lvl){          ans = node->val;          lvl = level;       }       solve(node->left, level + 1);       solve(node->right, level + 1);    }    int findBottomLeftValue(TreeNode* root) {       lvl = -1;       solve(root);       return ans;    } }; main(){    vector<int> v = {3,5,1,6,2,0,8,NULL,NULL,7,4};    TreeNode *tree = make_tree(v);    Solution ob;    cout <<(ob.findBottomLeftValue(tree)); }

ইনপুট

[3,5,1,6,2,0,8,null,null,7,4]

আউটপুট

7

  1. বাইনারি ট্রির বাউন্ডারি ট্রাভার্সাল C++-এ

  2. সর্বোচ্চ বাইনারি ট্রি নির্মাণ C++-এ

  3. ট্রির প্রতিটি সারির সর্বোচ্চ মান C++-এ

  4. C++-এ বাইনারি সার্চ ট্রি (BST)-এ সর্বনিম্ন মান্যুক্ত নোড (Node) খুঁজে বের করা