题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
/*
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)
{
queue<TreeNode*> que; //队列
vector<int> vec; //数组,保存元素
if (root == nullptr)
return vec;
que.push(root); //树的根存入队列
while (!que.empty()) //队列不为空,进入循环
{
root = que.front(); //取出队列头节点
que.pop(); //删除队列头节点
vec.push_back(root->val); //队列头节点的值存入数值
if (root->left) //队列头节点的左子节点存在的话,入栈
que.push(root->left);
if (root->right) //队列头节点的右子节点存在的话,入栈
que.push(root->right);
}
return vec; //返回数组
}
};