从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
/**
* 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>> levelOrder(TreeNode* root) {
if(root==nullptr)
{
return {};//如果根节点不存在,返回空值。
}
vector<vector<int>> res;//定义返回值存到res向量中
queue<TreeNode*>que;//队列存储树节点
que.push(root);//根节点入队
while(que.size()){//计算该层节点数
int n=que.size();//计算该层节点数
TreeNode* node; //定义节点,作为队列中树节点与整型变量中间的桥梁
vector<int>tmp; //定义整形向量,用来存储该层所有结点的值
for(int i=0;i<n;i++)
{
node=que.front(); //取出节点
que.pop();
tmp.push_back(node->val);//将给节点值放入向量中
if(node->left) que.push(node->left); //如果该节点存在左孩子,则将它的左孩子入队
if(node->right) que.push(node->right);
}
res.push_back(tmp);//将每层的节点值加入最终的结果向量中
}
return res;
}
};