#include <iostream>
#include <queue>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct Node {
int data;
struct Node *left;
struct Node *right;
Node(int x) {
data = x;
left = NULL;
right = NULL;
}
};
void LevelOrder(struct Node *root)
{
if (root == NULL) return;
std::queue<struct Node *>s;
s.push(root);
struct Node *tmp = NULL;
while(!s.empty()) {
tmp = s.front();
s.pop();
printf("%d ", tmp->data);
if (tmp->left) s.push(tmp->left);
if (tmp->right) s.push(tmp->right);
}
}
int main(int argc, char** argv)
{
Node *root = new Node(1);
root->left = new Node(3);
root->left->left = new Node(2);
root->left->right = new Node(1);
root->left->right->left = new Node(1);
root->right = new Node(-1);
root->right->left = new Node(4);
root->right->left->left = new Node(1);
root->right->left->right = new Node(2);
root->right->right = new Node(5);
root->right->right->right = new Node(2);
LevelOrder(root);
return 0;
}
输出结果:
1 3 -1 2 1 4 5 1 1 2 2