题目描述
本题知识点: 树 bfs
队列
思路:利用队列。我这里利用了两个队列,或者记当前层的子节点数也行,参考https://blog.csdn.net/cherrydreamsover/article/details/81515076
以下是我的解,已通过。
#include <queue>
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> result;
vector<int> level;
if(pRoot==NULL)
return result;
queue<TreeNode*> q1,q2;
q1.push(pRoot);
while(!q1.empty()||!q2.empty()){
while(!q1.empty()){
TreeNode* cur = q1.front();
if(cur->left!=NULL)
q2.push(cur->left);
if(cur->right!=NULL)
q2.push(cur->right);
level.push_back(cur->val);
q1.pop();
}
if(level.size()>0)
result.push_back(level);
level.clear();
while(!q2.empty()){
TreeNode* cur = q2.front();
if(cur->left!=NULL)
q1.push(cur->left);
if(cur->right!=NULL)
q1.push(cur->right);
level.push_back(cur->val);
q2.pop();
}
if(level.size()>0)
result.push_back(level);
level.clear();
}
return result;
}
};