একটি বাইনারি ট্রি দেওয়া আছে। লক্ষ্য হল সবচেয়ে গভীর লেভেলের লিফ নোডগুলোর মানগুলোর যোগফল বের করা।
রিকার্সিভ DFS দিয়ে প্রতিটি লেভেলের যোগফল ম্যাপে রাখা হয়। সর্বোচ্চ গভীরতার লেভেলের যোগফল রিটার্ন করা হয়।
ট্রি ইনপুট: (চিত্রে দেখানো)
আউটপুট: ১১ (গভীরতম লিফ নোড ৭ এবং ৪-এর যোগফল)
#includeusing 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