#include <iostream>
#include <queue>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int a) :val(a), left(NULL), right(NULL) {};
};
单纯的宽度优先
void widthOrder(TreeNode * p)
{
if (p == NULL)return;
queue<TreeNode*>help;
help.push(p);
while (!help.empty()) {
p = help.front();
help.pop();
cout << p->val << " ";
if (p->left != NULL)
help.push(p->left);
if (p->right != NULL)
help.push(p->right);
}
}
输出每层的层数的宽度优先遍历
void widthOrder_count(TreeNode * p)
{
if (!p) {
cout << 0 << " ";
return;
}
queue<TreeNode*>help;
help.push(p);
TreeNode* cur = p, *next = NULL;
int num = 0;
while (!help.empty()) {
p = help.front();
help.pop();
num++;
if (p->left != NULL) {
help.push(p->left);
next = p->left;
}
if (p->right != NULL) {
help.push(p->right);
next = p->right;
}
if (p == cur) {
cout << num << endl;
cur = next;
next = NULL;
num = 0;
}
}
}