非常简单:
#include <iostream>
#include <queue>
using namespace std;
struct Node {
Node* left;
Node* right;
int value;
Node(int v) {
left = right = NULL;
value = v;
}
~Node() {
if (left) {
delete left;
left = NULL;
}
if (right) {
delete right;
right = NULL;
}
}
};
void PrintLevel(Node* root) {
queue<Node*> q;
if (root) {
q.push(root);
int cur_level = 1;
int cur_level_num = 1;
int next_level_num = 0;
while(!q.empty()) {
Node* cur_node = q.front();
q.pop();
cout << cur_node->value << ", ";
cur_level_num--;
if (cur_node->left) {
q.push(cur_node->left);
next_level_num++;
}
if (cur_node->right) {
q.push(cur_node->right);
next_level_num++;
}
if (cur_level_num == 0) {
cout << endl;
cur_level++;
cur_level_num = next_level_num;
next_level_num = 0;
}
}
}
}
int main() {
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
root->right->left = new Node(6);
root->right->right = new Node(7);
PrintLevel(root);
delete root;
}