#include "s0404_sum_of_left_leaves.hpp" struct TreeNodeState_S0404 { TreeNode* ptr; int sum; bool isLeft; }; int S0404::sumOfLeftLeaves(TreeNode* root) { int sum{0}; queue q; if (root) q.push(TreeNodeState_S0404{root, root->val, false}); while (!q.empty()) { TreeNodeState_S0404 front = q.front(); q.pop(); if (front.ptr->left == nullptr && front.ptr->right == nullptr && front.isLeft) sum += front.ptr->val; if (front.ptr->left) q.push(TreeNodeState_S0404{front.ptr->left, front.sum + front.ptr->left->val, true}); if (front.ptr->right) q.push(TreeNodeState_S0404{front.ptr->right, front.sum + front.ptr->right->val, false}); } return sum; }