22. 从上到下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路
考虑使用队列,:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都打印出来为止。
代码实现
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
//思路:层序遍历,至于如何输出,FIFO,考虑队列
TreeNode* fr;
if( root == NULL)
{
return result;
}
que.push(root);
while(!que.empty()) //检查que的size是否为0,返回一个bool值
{
fr = que.front(); //访问队列的队首
result.push_back(fr->val);
if (fr->left != NULL)
{
que.push(fr->left);
}
if ( fr->right != NULL)
{
que.push(fr->right);
}
que.pop();
}
return result;
}
private:
vector<int> result;
queue<TreeNode*> que;
};
思考
这也是一个BFS问题。