天天看點

levelTravel

levelTravel

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;
}

           

繼續閱讀