跟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); } };