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

C++-এ বাইনারি ট্রির বাম পাতা নোডের যোগফল বের করা


বাইনারি ট্রিতে যেসব লিফ নোড তার পেরেন্টের বাম পাশে আছে, তাদের যোগফল বের করতে হবে।

অ্যালগরিদম (রিকার্সিভ)

  • বেস কেস: রুট NULL হলে ০ রিটার্ন।
  • যদি রুটের বাম চাইল্ড লিফ হয় (দুই চাইল্ডই NULL), তবে তার মান + ডান সাবট্রির রিকার্সিভ কল।
  • অন্যথায় বাম ও ডান সাবট্রির রিকার্সিভ কল যোগ করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

struct TreeNode {
    int data;
    TreeNode *left, *right;
    TreeNode(int d) : data(d), left(nullptr), right(nullptr) {}
};

int leftLeafSum(TreeNode* root) {
    if (!root) return 0;
    if (root->left && !root->left->left && !root->left->right) {
        return root->left->data + leftLeafSum(root->right);
    }
    return leftLeafSum(root->left) + leftLeafSum(root->right);
}

int main() {
    TreeNode* root = new TreeNode(4);
    root->left = new TreeNode(2);
    root->right = new TreeNode(2);
    root->left->left = new TreeNode(5);
    root->left->right = new TreeNode(7);
    root->right->left = new TreeNode(5);
    root->right->right = new TreeNode(7);
    
    cout << leftLeafSum(root) << endl; // 5+5=10
    return 0;
}

আউটপুট

10

বাম লিফ নোডগুলো: ৫ এবং ৫। যোগফল = ১০।


  1. C++-এ বাইনারি ট্রির সব লিফ নোড ডান থেকে বাম প্রিন্ট করা

  2. বাইনারি ট্রিতে নিকটতম লিফ নোড খুঁজে বের করা (C++)

  3. বাইনারি ট্রিতে রুট থেকে নির্দিষ্ট নোডের দূরত্ব বের করা C++-তে

  4. C++-এ পারফেক্ট বাইনারি ট্রি (Perfect Binary Tree) সকল নোডের যোগফল নির্ণয়