[剑指offer]从上到下打印二叉树II-——把二叉树打印成多行
剑指offer-从上到下打印二叉树II
题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示: 节点总数 <= 1000
解题思路
在剑指offer-从上到下打印二叉树的基础上,多加了一个判断。根节点出队后,根节点的左右子树节点入队,之后队列每出去一层节点,它们的下一层子节点会进队,所以,每次出队之前的队列大小代表这一层有几个节点。
实现代码
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>res;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
<vector<int>list;
int num = que.size();//队列大小代表这一层有几个节点
while(num--){
TreeNode* temp = que.front();//获得队列头节点
que.pop();
if(temp){//节点不为null时
list.push_back(temp->val);//节点值保存
que.push(temp->left);//左子树入队
que.push(temp->right);//右子树入队
}
}
if(!list.empty())//list有可能是[]
res.push_back(list);
}
return res;
}
};