include
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> >res;
vector<int> rowRes; //每行的结果
queue<TreeNode*> que;</int></int></int>
if(!pRoot) //当结点为空时,直接返回
return res;
int A = 0;
int B = 1;
que.push(pRoot); //先把第一个结点放入队列
while(B)//当队列内有值的时候
{
//A记录的时下一行的元素个数,每一轮向队列里扔元素的时候才++
if(que.front()->left)
{
que.push(que.front()->left);
A++; //
}
if(que.front()->right)
{
que.push(que.front()->right);
A++; //
}
//每存完一个父节点的孩子,就把父节点pop(),并且
rowRes.push_back(que.front()->val);
que.pop();
B--;
if(!B) //当B为0时,说明已经存完上一行的元素值了,开始进行下一行元素的存储
{
res.push_back(rowRes);
rowRes.clear();
B=A; //此时B存入的说下一列的元素个数,若下一轮元素
A = 0;//下一轮循环开始
}
}
return res;
}};

京公网安备 11010502036488号