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

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


একটি বাইনারি ট্রি দেওয়া আছে। লক্ষ্য হল ট্রির সকল ডান পাশের লিফ নোড (Right Leaves) মানগুলোর যোগফল বের করা।

DFS রিকার্শন: নোড নাল হলে রিটার্ন। লিফ নোড হলে এবং ডান পাশে থাকলে (add=true) মান যোগ করা হয়। বাম সাবট্রিতে add=false, ডান সাবট্রিতে add=true দিয়ে রিকার্শন।

উদাহরণ

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

আউটপুট: ১৭ (ডান লিফ নোড ৭ এবং ১০-এর যোগফল)

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 ret = 0;
    void dfs(TreeNode* node, bool add){
        if(!node) return;
        if(!node->left && !node->right && add){
            ret += node->val;
        }
        dfs(node->left, false);
        dfs(node->right, true);
    }
    int solve(TreeNode* root) {
        ret = 0;
        dfs(root, true);
        return ret;
    }
};

int main(){
    Solution ob;
    TreeNode *root = new TreeNode(3);
    root->left = new TreeNode(9);
    root->right = new TreeNode(10);
    root->left->left = new TreeNode(15);
    root->left->right = new TreeNode(7);
    cout << ob.solve(root);
    return 0;
}
আউটপুট

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

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

  2. বাইনারি ট্রিতে ভার্টিকাল সমের সর্বোচ্চ মান খুঁজে বের করা C++-তে

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

  4. Python দিয়ে বাইনারি ট্রিতে একটি নোডের ডানে অবস্থিত নোড বের করার প্রোগ্রাম