이 진 트 리 의 네 가지 옮 겨 다 니 는 방법: 앞 순서, 중간 순서, 뒤 순서, 차원

전 / 중 / 후 순 서 를 옮 겨 다 니 는 것 도 각각 전 / 중 / 후 근 옮 겨 다 니 는 것 이 라 고 할 수 있다.
#include 
using namespace std;

//           
typedef struct BiTNode{
    int data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

//      
typedef struct LinkNode{
    BiTNode *data;
    struct LinkNode *next;
}LinkNode;

typedef struct{
    LinkNode *front,*rear;//      
}LinkQueue;

void visit(BiTree T){
    cout>>T.data>>endl;
}

//    
void PreOrder(BiTree T){
    if(T!=NULL){
        visit(T);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

//    
void InOrder(BiTree T){
    if(T!=NULL){
        InOrder(T->lchild);
        visit(T);
        InOrder(T->rchild);
    }
}

//    
void PostOrder(BiTree T){
    if(T!=NULL){
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        visit(T);
    }
}

//    
void LevelOrder(BiTree T){
    LinkQueue Q;
    InitQueue(Q);  //     
    BiTree p;
    EnQueue(Q,T);
    while(!IsEmpty(Q)){
        DeQueue(Q,p);  //      
        visit(p);
        if(p->lchild!=NULL)
            EnQueue(Q,p->lchild);
        if(p->rchild!=NULL)
            EnQueue(Q,p->rchild);
    }
}

좋은 웹페이지 즐겨찾기