#include <iostream>
using namespace std;
// binary tree node
struct Node
{
int data;
Node *left,*right;
Node(int x)
{
data = x;
left = right = NULL;
}
};
int height(Node *root)
{
if (!root)
return 0;
int hLeft = height(root->left);
int hRight = height(root->right);
return ((hLeft > hRight) ? (hLeft + 1) : (hRight + 1));
}
void printGivenLevel(Node *root, int level, bool z)
{
if (!root) return;
if (level == 1) cout << root->data << "\t";
else {
if (z) {
printGivenLevel(root->left, level - 1, z);
printGivenLevel(root->right, level - 1, z);
} else {
printGivenLevel(root->right, level - 1, z);
printGivenLevel(root->left, level - 1, z);
}
}
}
void printLevelOrder(Node *root)
{
int h = height(root);
bool z = true;
for (int i = 1; i <= h; i++) {
printGivenLevel(root, i, z);
z = !z;
cout<<endl;
}
}
// Driver code
int main()
{
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);
cout << "\n------------------------------\n";
printLevelOrder(root);
cout << "\n------------------------------\n";
return 0;
}
输出结果:
------------------------------
1
-1 3
2 1 4 5
2 2 1 1
------------------------------