写在前面
好久没有更新这个模块了。不得不说,确实最近做的工程项目比较少,主要是在刷题与学习深度学习,但是还是要有一颗不断积累错误的心。这个bug也是在刷LeetCode的时候遇到的。参考:LeetCode-107. Binary Tree Level Order Traversal II。
实例代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> res;
queue<TreeNode*> layer;
if(!root) return res;
layer.push(root);
while(!layer.empty()){
int len=layer.size();
vector<int> laynum;
for(; len>=0; len--){
TreeNode* temp=layer.front();
layer.pop();
if(temp->left) layer.push(temp->left);
if(temp->right) layer.push(temp->right);
laynum.push_back(temp->val);
}
res.push_back(laynum);
}
reverse(res.begin(), res.end());
return res;
}
};
错误提示
Line 23: member access within misaligned address 0x000000000021 for type 'struct TreeNode', which
requires 8 byte al
错误原因
可以根据错误提示,意思就是成员访问了错误的地址,结合提示错误提示,是在第23行的错误,第23行是循环开始,如果说成员访问错误,那有可能就是循环时对队列queue成员访问出错。仔细检查就发现,len>=0,多了一个=,这导致在一次循环中,queue多访问了,所以报错。
解决方法
for(; len>=0; len--)
改为
for(; len>0; len--)