【发布时间】:2020-04-19 21:44:53
【问题描述】:
我有以下工作代码(g++ 8.2,C++17 标准。)
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;
然后我将queue<TreeNode*> 替换为deque<TreeNode*>。事实证明,速度至少提高了 20%。为什么deque<TreeNode*> 比queue<TreeNode*> 快那么多?
【问题讨论】:
-
如果您指定用于此发现的编译器会很有帮助
-
您是在测试未优化的调试版本还是优化的发布版本?你的编译器标志/选项是什么?
-
您能否提供用于进行计时的最少代码以及用于编译代码的编译器设置?
标签: c++ data-structures queue deque