回覆列表
  • 1 # 使用者4522173778936

    其實這個程式很簡單的。

    程式碼如下:

    #include

    #include

    #define MAX_TREE_SIZE 100

    typedef struct {

    int i;

    }TElemType;

    typedef struct BiTNode{

    char data;

    struct BiTNode *lchild,*rchild;

    }BiTNode,*BiTree;

    int CreateBiTree(BiTree &T)

    {

    char ch;

    scanf("%c",&ch);

    getchar();

    if(ch==" "||ch=="

    ")

    {

    T=NULL;

    }

    else{

    T=(BiTNode *)malloc(sizeof(BiTNode));

    T->data=ch;

    CreateBiTree(T->lchild);

    CreateBiTree(T->rchild);

    }

    return 1;

    }//CreateBiTree()

    int Visit(char ch)

    {

    printf("%c",ch);

    return 1;

    }

    int PreOrderTraverse(BiTree T,int (* Visit)(char ch))

    {

    if(T)

    {

    if(Visit(T->data))

    if(PreOrderTraverse(T->lchild,Visit))

    if(PreOrderTraverse(T->rchild,Visit)) return 1;

    }else return 1;

    }

    int InOrderTraverse(BiTree T,int (* Visit)(char ch))

    {

    if(T)

    {

    if(InOrderTraverse(T->lchild,Visit))

    if(Visit(T->data))

    if(InOrderTraverse(T->rchild,Visit)) return 1;

    }else return 1;

    }

    int PostOrderTraverse(BiTree T,int(* Visit)(char ch))

    {

    if(T)

    {

    if(PostOrderTraverse(T->lchild,Visit))

    if(PostOrderTraverse(T->rchild,Visit))

    if(Visit(T->data)) return 1;

    }else return 1;

    }

    void main()

    {

    BiTree T;

    printf("從根節點輸入二叉樹,儲存方式採用中序遍歷,無分支請輸入空格:

    ");

    CreateBiTree(T);

    printf("先序遍歷為:");

    PreOrderTraverse(T,Visit);

    printf("

    ");

    printf("中序遍歷為:");

    InOrderTraverse(T,Visit);

    printf("

    ");

    printf("後序遍歷為:");

    PostOrderTraverse(T,Visit);

    }。

  • 中秋節和大豐收的關聯?
  • 無花果換盆換土正確方法?