跟TCP粘包的解决方式差不多。第一种方法是保存每层的长度,第二种方法是使用分隔符nullptr将每层隔开。
使用第二种方法。
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
if(!pRoot) return {};
queue<TreeNode*> que;
que.push(pRoot); que.push(nullptr);
vector<vector<int>> res;
vector<int> vec;
while(!que.empty()) {
TreeNode *temp = que.front();
que.pop();
if(temp) {
cout << temp->val << endl;
vec.push_back(temp->val);
if(temp->left) que.push(temp->left);
if(temp->right) que.push(temp->right);
} else {
if(!que.empty()) que.push(nullptr);
res.push_back(vec);
vec.clear();
}
}
return move(res);
}
};

京公网安备 11010502036488号