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

创建一个树的结构体

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

如图输出:

猜你喜欢

转载自www.cnblogs.com/JianDa/p/10781251.html