[剑指offer]从上到下打印二叉树
题目描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
通过次数22,621提交次数35,155
解题思路
- 用一个队列进行层次遍历
- 先将二叉树的头节点入队,然后出队,然后判断是否有左子树,有的话入队,是否有右子树,有的话入队。然后出队,对出队节点进行访问,如此反复,直到队列为空。
实现代码
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
vector<int>res;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
TreeNode* temp = que.front();//获得队列头节点
que.pop();
if(temp){//节点不为null时
res.push_back(temp->val);//节点值保存
que.push(temp->left);//左子树入队
que.push(temp->right);//右子树入队
}
}
return res;
}
};