在此代码中,用到了两个队列,队列1用于进行打印、遍历操作,队列2用于临时保存数据,代码如下:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > v;
if(NULL == pRoot)
return v;
typedef TreeNode Node;
queue<Node*> q1, q2;
int index = 0;
q1.push(pRoot);
while(!q1.empty())
{
v.resize(index+1);
int size = q1.size();
v[index].resize(size);
for(int i = 0; i < size; ++i)
{
Node* temp = q1.front();
q1.pop();
v[index][i] = temp->val;
q2.push(temp);
}
for(int i = 0; i < size; ++i)
{
Node* temp = q2.front();
q2.pop();
if(temp->left)
q1.push(temp->left);
if(temp->right)
q1.push(temp->right);
}
++index;
}
return v;
}