层次遍历借助队列。
class Solution {
public:vector<vector<int> > levelOrder(TreeNode* root) {
vector<vector<int> > res;//因为后面是按层添加的。row是vector<int> row
if(root == NULL)
//如果是空,则直接返回空vector fast-template
return res;
//队列存储,进行层次遍历
queue<TreeNode*> q;//队列
q.push(root);
TreeNode* cur;//当前正在操作的结点(包括出队,以及加入孩子结点)
while(!q.empty()){
//记录二叉树的某一行
vector<int> row;
int n = q.size();
//因先进入的是根节点,故每层结点多少,队列大小就是多少
for(int i = 0; i < n; i++){
cur = q.front();//当前指向(记录)队列的第一个
q.pop();//第一个元素出队
row.push_back(cur->val);//出队并记录当前结点value
//若是左右孩子存在,则存入左右孩子作为下一个层次
if(cur->left)
q.push(cur->left);
if(cur->right)
q.push(cur->right);
}
//每一层加入输出
res.push_back(row);
}
return res;}
};