28 lines
784 B
C++
28 lines
784 B
C++
#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<TreeNodeState_S0404> 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;
|
|
}
|