用队列去进行实现,先把根节点压入队列中,然后开始循环,每次循环时针对队首结点,将其左节点和有节点压入队列,然后队首结点就弹出,这样就可以实现对一个二叉树进行层序的遍历了。
#include <iostream>
using namespace std;
#include <string>
#include<queue>
struct TreeNode
{
int val;
TreeNode * left;
TreeNode * right;
TreeNode(int x): val(x),left(nullptr),right(nullptr){}
};
int main() {
queue<TreeNode*> res;
TreeNode *head = new TreeNode(1);
TreeNode *p = head;
head->left = new TreeNode(2);
head->right = new TreeNode(3);
head->left->left = new TreeNode(4);
head->left->right = new TreeNode(5);
head->right->left = new TreeNode(6);
head->right->right = new TreeNode(7);
vector<int> to_pr;
res.push(head);
while (!res.empty()) {
if (res.front()->left) {
res.push(res.front()->left);
}
if (res.front()->right) {
res.push(res.front()->right);
}
to_pr.push_back(res.front()->val);
res.pop();
}
for (int i = 0; i < to_pr.size(); i++) {
if (i < to_pr.size() - 1) cout << to_pr[i] << "->";
else cout << to_pr[i];
}
system("pause");
return 0;
}

输出示例图片