把二叉树打印成多行
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; }
};