层序打印二叉树,每一层从左往右打印
- 层序遍历,用辅助队列
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
/*
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> ans;
// 辅助队列
queue<TreeNode*> queue_tree;
// 特殊情况处理
if (root == nullptr) {
return ans;
}
// 层序遍历
queue_tree.push(root);
while(!queue_tree.empty()){
// 获取数据,存入结果
TreeNode * node = nullptr;
node = queue_tree.front();
queue_tree.pop();// 将一遍历的节点出栈
ans.push_back(node->val);
// 左右节点入队
if (node->left != nullptr) {
queue_tree.push(node->left);
}
if (node->right != nullptr) {
queue_tree.push(node->right);
}
}
return ans;
}
};
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com