题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:
用队列来实现,层序打印遍历二叉树。先将根结点入队,然后访问队头元素,如果左子树存在,将左子树入队列,如果右子树存在,将右子树入队列。访问队列中的元素就是每一层的结点值。
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > res;
if(pRoot == NULL)
return res;
queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty())
{
int size = q.size();
vector<int> v;
for(int i=0; i<size; ++i){
TreeNode* tmp = q.front();
v.push_back(tmp->val);
q.pop();
if(tmp->left)
q.push(tmp->left);
if(tmp->right)
q.push(tmp->right);
}
res.push_back(v);
}
return res;
}
};