思路
代码:
/*
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==NULL) //如果当前节点为空,则返回空的列表
{
return res;
}
queue<TreeNode*>que; //定义一个队列存放后面需要遍历的节点
que.push(root);//将根节点入队
while(!que.empty())//当队列不为空
{
TreeNode * node = que.front(); //对头节点出队列
que.pop();//从栈顶移除当前已经遍历的节点
res.push_back(node->val); //保存当前节点的值
if(node->left!=NULL){//添加左子树
que.push(node->left);
}
if(node->right!=NULL)//添加右子树
{
que.push(node->right);
}
}
return res;
}
};