题目来源:牛客网
编程连接
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析:
使用队列,其实就是二叉树的层序遍历,利用一个队列就可以实现了,具体点说就是BFS。
代码:
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
queue<TreeNode*> que;
vector<int> ret;
if(root!=nullptr)
que.push(root);
while(!que.empty())
{
auto temp = que.front();
que.pop();
ret.push_back(temp->val);
if(temp->left!=nullptr)
que.push(temp->left);
if(temp->right!=nullptr)
que.push(temp->right);
}
return ret;
}
};
别人的代码:
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
queue<TreeNode*> que;
vector<int> ret;
que.push(root);
while(!que.empty())
{
auto temp = que.front();
que.pop();
if(temp == nullptr)
continue;
ret.push_back(temp->val);
que.push(temp->left);
que.push(temp->right);
}
return ret;
}
};