题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:用bfs,借助队列操作。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> res;
if(pRoot == nullptr) return res;
queue<TreeNode*> nodes;
nodes.push(pRoot);
int i=0, len=0;
TreeNode *pnode;
while(!nodes.empty())
{
vector<int> vec;
len = nodes.size();
for(i=0;i<len;++i)
{
pnode = nodes.front();
vec.push_back(pnode->val);
if(pnode->left) nodes.push(pnode->left);
if(pnode->right) nodes.push(pnode->right);
nodes.pop();
}
res.push_back(vec);
}return res;
}
};