题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路:按层打印二叉树,即二叉树的层序遍历。使用队列即可。
/*
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> > tree;
if (NULL == pRoot){
return tree;
}
int level = 0;
queue<TreeNode*> nodeQueue;
vector<int> valueVec;
TreeNode *pNode;
nodeQueue.push(pRoot);
while (!nodeQueue.empty()){
level = nodeQueue.size();
valueVec.clear();
for (int i = 0; i < level; i++){
pNode = nodeQueue.front();
valueVec.push_back(pNode->val);
if (pNode->left){
nodeQueue.push(pNode->left);
}
if (pNode->right){
nodeQueue.push(pNode->right);
}
nodeQueue.pop();
}
tree.push_back(valueVec);
}
return tree;
}
};