I have the following working codes (g++ 8.2 , the C++17 standard.)
queue<TreeNode*> q{};
q.push(root);
q.push(nullptr);
int sum = root -> val;
while (!q.empty()) {
TreeNode *n = q.front();
q.pop();
if (n != nullptr) {
sum += n->val;
if (n-> left != nullptr) q.push(n->left);
if (n-> right != nullptr) q.push(n->right);
} else {
if (q.empty()) break;
q.push(nullptr);
sum = 0;
}
}
return sum;
Then I replaced queue<TreeNode*>
with deque<TreeNode*>
. It turned out the speed improved at least 20%. Why is deque<TreeNode*>
so much faster than queue<TreeNode*>
?