使用递归法建立二叉树

1.代码

#include<stdio.h>
typedef struct BiTNode
{
    char data;
    struct BiTNode *rchild,*lchild;
} BiTNode,*BiTree;
int CreateBiTree(BiTNode *&T)   
{
    char x;
    scanf("%c",&x);
    if(x=='#')
        T=NULL;
    else
    {
        T=new BiTNode;     
        T->data=x;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
    return 0;
}
void PreOrder(BiTree T)
{
    if(T)
    {
        printf("%c",T->data);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}
void InOrder(BiTree T)
{
    if(T)
    {
        InOrder(T->lchild);
        printf("%c",T->data);
        InOrder(T->rchild);
    }
}
void PostOrder(BiTree T)
{
    if(T)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        printf("%c",T->data);
    }
}
int main()
{
    BiTNode *T;
    printf("以先序遍历的形式输入二叉树:"); 
    CreateBiTree(T);
    printf("前序遍历:"); 
    PreOrder(T);
    printf("\n中序遍历:");
    InOrder(T);
    printf("\n后序遍历:");
    PostOrder(T);
    delete T;
    return 0;
}

1.1先序遍历

void PreOrder(BiTree T)
{
    if(T)
    {
        printf("%c",T->data);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

1.2中序遍历

void InOrder(BiTree T)
{
    if(T)
    {
        InOrder(T->lchild);
        printf("%c",T->data);
        InOrder(T->rchild);
    }
}

1.3后序遍历

void PostOrder(BiTree T)
{
    if(T)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        printf("%c",T->data);
    }
}

2.运行结果截图

 使用递归法建立二叉树 随笔

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。