题目:从上到下按层打印二叉树,同一层节点从左致右输出,每一层输出一行
代码实现:
//用两个队列实现按层打印树
vector<vector<int> > Print2(TreeNode* pRoot)
{
vector<vector<int> > res;
if(pRoot==nullptr) return res;
queue<TreeNode*> q1,q2;//用队列缓存树节点的print顺序
q1.push(pRoot);
while(!q1.empty())
{
vector<int> tmp;
while(!q1.empty())
{
tmp.push_back(q1.front()->val);//依次取出栈中元素的值
if(q1.front()->left) q2.push(q1.front()->left);//将栈顶元素按从左至右顺序压入队列
if(q1.front()->right) q2.push(q1.front()->right);
q1.pop();//删除栈顶元素
}
while(!q2.empty()) //将队列中的元素依次入栈
{
q1.push(q2.front());
q2.pop();
}
res.push_back(tmp);
}
return res;
}