levelTravel.h
#include<iostream>
#include<queue>
using namespace std;
template <class T>
class Travel
{
public:
struct node
{
T data;
node *left;
node *right;
};
node* Create() //建立樹
{
int data;
cin>>data;
node *Tree;
if(data == -1)
return NULL;
else
{
Tree = new node;
Tree->data = data;
Tree->left = Create();
Tree->right = Create();
}
return Tree;
}
void levelTravel(node *&BinTree)
{
queue<node *> que;
que.push(BinTree);
while(!que.empty())
{
node *q = que.front();
cout<<q->data<<" ";
que.pop();
if(q->left != NULL)
{
que.push(q->left);
}
if(q->right != NULL)
{
que.push(q->right);
}
}
cout<<endl;
}
void levelTravel2(node *&BinTree)
{
if(BinTree == NULL)
return;
queue<node *> que;
que.push(BinTree);
while(!que.empty())
{
if(!(que.front())->left == NULL)
{
que.push((que.front())->left);
}
if(!(que.front())->right == NULL)
{
que.push((que.front())->right);
}
cout<<(que.front())->data<<" ";
que.pop();
}
cout<<endl;
}
void print(node *&tree)
{
levelTravel(tree);
levelTravel2(tree);
}
private:
};
main()
#include "levelTravel.h"
using namespace std;
int main()
{
Travel<int>::node *tree;
Travel<int> Tree;
tree = Tree.Create();
Tree.print(tree);
cout << "Hello world!" << endl;
return 0;
}