题目描述:
从上打印出二叉树的每一个节点,同层节点从左至右打印。
解题思路:
用一个队列保存将要搜索的这一层的元素,然后逐个搜索;
1、将第一个元素加入队列
2、队列不为空时取队首元素
3、将下一层元素加入队尾
4、调到第二步,直到队列为空
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root)
{
vector<int> res;
if(NULL == root) //代码的健壮性
return res;
queue<TreeNode*> que; //辅助队列用来存放每一层的结点
que.push(root); //将根结点入队
while(! que.empty()) //队列不为空
{
TreeNode* p = que.front(); //将队头的结点赋值给p
que.pop(); //队头结点出队
if(p->left) //若该结点左子树不为空
que.push(p->left);
if(p->right) //若该结点右子树不为空
que.push(p->right);
res.push_back(p->val); //将该结点的数据存入数组中
}
return res;
}
};