题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
二叉树的层次遍历,借助一个队列实现。
创建一个队列,其中元素的类型为二叉树的节点;
按照“根-左-右”的顺序依次将二叉树的节点放入队列,每次从队顶取出对应节点的值,并删除队顶元素,直到队列为空。
代码
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
if (root == nullptr)
return res;
queue<TreeNode *> myqueue;
myqueue.push(root);
while (!myqueue.empty()){
TreeNode * front = myqueue.front();
res.push_back(front->val);
myqueue.pop();
if (front->left)
myqueue.push(front->left);
if (front->right)
myqueue.push(front->right);
}
return res;
}
};