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

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


একটি বাইনারি ট্রি দেওয়া আছে। লক্ষ্য হল সবচেয়ে গভীর লেভেলের লিফ নোডগুলোর মানগুলোর যোগফল বের করা।

রিকার্সিভ DFS দিয়ে প্রতিটি লেভেলের যোগফল ম্যাপে রাখা হয়। সর্বোচ্চ গভীরতার লেভেলের যোগফল রিটার্ন করা হয়।

উদাহরণ

ট্রি ইনপুট: (চিত্রে দেখানো)

আউটপুট: ১১ (গভীরতম লিফ নোড ৭ এবং ৪-এর যোগফল)

C++ কোড উদাহরণ
#include 
using namespace std;

class TreeNode{
public:
    int val;
    TreeNode *left, *right;
    TreeNode(int data){
        val = data;
        left = right = NULL;
    }
};

class Solution {
public:
    int maxDepth;
    map m;
    void solve(TreeNode* node, int level = 0){
        if(!node) return;
        maxDepth = max(level, maxDepth);
        m[level] += node->val;
        solve(node->left, level + 1);
        solve(node->right, level + 1);
    }
    int deepestLeavesSum(TreeNode* root) {
        maxDepth = 0;
        m.clear();
        solve(root);
        return m[maxDepth];
    }
};

int main(){
    TreeNode *root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);
    root->right->right = new TreeNode(6);
    root->right->right->right = new TreeNode(4);
    root->left->left->left = new TreeNode(7);
    Solution ob;
    cout << ob.deepestLeavesSum(root);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

11
  1. সি++-এ একটি রেখার মিড-পয়েন্ট বের করার প্রোগ্রাম

  2. সি++-এ ত্রিভুজের কেন্ড্রয়েড (Centroid) বের করার প্রোগ্রাম

  3. সি++-এ সমান্তরাল চতুর্ভুজের (Parallelogram) ক্ষেত্রফল বের করার প্রোগ্রাম

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