思路
代码:
/* 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; } };