题目描述
blablabla
//我们用两个标识位把 ,一个表示 当前层 有多少个节点
//一个表示 当前层节点 有没有打印完 打印完了 就清空当前层节点 开始打印下一层
//应为打印出来的个数 和层数 使相关的 所以 当打印完的时候 也是下一层遍历完的时候
样例
blablabla
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> printFromTopToBottom(TreeNode* root) {
//我们用两个标识位把 ,一个表示 当前层 有多少个节点
//一个表示 当前层节点 有没有打印完 打印完了 就清空当前层节点 开始打印下一层
//应为打印出来的个数 和层数 使相关的 所以 当打印完的时候 也是下一层遍历完的时候
vector<vector<int>> res;
if(!root ) return res;
queue<TreeNode*> q;
q.push(root);
//定义两个标识位
int nextStar = 0;
int toLeave = 1;
vector<int> level;
while(q.size()){
auto t = q.front();
q.pop();
if(t->left) q.push(t->left),++nextStar;
if(t->right) q.push(t->right),++nextStar;
level.push_back(t->val);
--toLeave;
if(toLeave==0){
res.push_back(level);
level.clear();
toLeave = nextStar;
nextStar = 0;
}
}
return res;
}
};