使用递归法实现树的前,中,后序遍历

创建一个树的结构体

using namespace std;
typedef struct node{
    char data;
    struct node *lchild;
    struct node *rchild;
}BTnode;

创建树的函数,如果遇到#则代表无输入

void CreateBtree(BTnode *&T){
    char data;
    cin>>data;
    T=new BTnode;
    if(data=='#'){
        T=NULL;
        return ;
    }
    T->lchild=NULL;
    T->rchild=NULL;
    T->data=data;
    CreateBtree(T->lchild);
    CreateBtree(T->rchild);
}

前序遍历

void PreOrder(BTnode *&T){
    if(T){
        cout<<T->data<<" ";
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

中序遍历

void InOrder(BTnode *&T){
    if(T){
        InOrder(T->lchild);
        cout<<T->data<<" "; 
        InOrder(T->rchild);
    }
}

后序遍历

void PostOrder(BTnode *&T){
    if(T){
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        cout<<T->data<<" "; 
    }
}

如图输出:

 

posted @ 2019-04-28 00:24  简达亮  阅读(454)  评论(0)    收藏  举报