题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
利用队列的特性,先进先出,li用队列的元素个数控制每次循环的次数
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> arr;
if(pRoot == NULL ) return arr;
queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty())
{
int i=0;
int size=q.size();//队列元素的个数
vector<int> item;
while(i++<size)
{
TreeNode* tmp=q.front();//保存要出队列的元素
q.pop();
item.push_back(tmp->val);
if(tmp->left != NULL)
q.push(tmp->left);//入出队列的元素的左孩子
if(tmp->right != NULL)
q.push(tmp->right);//入出队列的元素的右孩子
}
arr.push_back(item);//将以层的所有元素保存在item中,在插入到arr中
}
return arr;
}