二叉树的层次遍历能用bfs解决,但是如果要求输出每一层的节点,在为一层之后进行换行的话。
一般能想到的是在队列的结构体里边再加一个变量dep记录他的深度。
不过这里可以加一个结束标记NULL,将NULL作为每一行的最后一个节点,就能实现功能。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e3 + 10;
#define INF 0x3f3f3f3f
#define clr(x,y) memset(x,y,sizeof x)
const ll Mod = 998244353;
typedef unsigned long long ull;
struct TreeLinkNode {
int val;
TreeLinkNode *left, *right, *next;
TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
};
void solve(TreeLinkNode * root)
{
if(root == NULL)return;
queue<TreeLinkNode*>q;
q.push(root);q.push(NULL);
int level = 1;
while(!q.empty())
{
TreeLinkNode * t = q.front();q.pop();
if(t == NULL)
{
if(q.empty())break;
level ++;
q.push(NULL);
puts("