快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

二叉树实现源代码

      二叉树实现源代码如下:

    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>

    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    #define OVERFLOW -2
    typedef int status;

    typedef strUCt BiNode
    {
        char Data;
        struct BiNode* lChild;
        struct BiNode* rChild;
    }BiNode,*pBiNode;

    status CreateTree(BiNode** pTree);
    status PreOrderTraval(BiNode* pTree);
    status Visit(char Data);
    status Display(BiNode* pTree,int Level);
    status Clear(BiNode* pTree);

    BiNode *pRoot=NULL;

    main()
    {
        clrscr();
        CreateTree(&pRoot);

        printf("\nPreOrder:");
        PreOrderTraval(pRoot);
        printf("\n");

        printf("\nInOrder:");
        InOrderTraval(pRoot);
        printf("\n");

        printf("\nPostOrder:");
        PostOrderTraval(pRoot);
        printf("\n");

        printf("\nShowLeaves:");
        ShowLeaves(pRoot);
        printf("\n-----------------------\n");
        printf("\n");

        Display(pRoot,0);

        printf("\n");
        printf("\nDeleting Tree:\n");


 

       DelTree(pRoot);
        printf("BiTree Deleted.");

        getch();
    }
    status CreateTree(BiNode** pTree) /*Input Example: abd##e##cf##g##*/
    {
        char ch;
        scanf("%c",&ch);
        if(ch==‘#‘)
        {
            (*pTree)=NULL;
        }
        else
        {
            if(!((*pTree)=(BiNode*)malloc(sizeof(BiNode))))
            {
                exit(OVERFLOW);
            }
            (*pTree)->Data=ch;
            CreateTree(&((*pTree)->lChild));
            CreateTree(&((*pTree)->rChild));
        }
    return OK;
    }
    status PreOrderTraval(BiNode* pTree)
    {
        if(pTree)
        {
            if(Visit(pTree->Data))
            {
                if(PreOrderTraval(pTree->lChild))
                {
                    if(PreOrderTraval(pTree->rChild))
                    {
                       return OK;
                    }
                }
            }
            return ERROR;
        }
        else
        {
            return OK;
        }
    }
    status InOrderTraval(BiNode* pTree)
    {
        if(pTree)
        {
            if(InOrderTraval(pTree->lChild))
            {
                if(Visit(pTree->Data))
                {
                    if(InOrderTraval(pTree->rChild))
                    {
                        return OK;
                    }
                }
                return ERROR;
            }
            return ERROR;
        }
        else

        {
            return OK;
        }
    }
    status PostOrderTraval(BiNode* pTree)
    {
        if(pTree)
        {
            if(PostOrderTraval(pTree->lChild))
            {
                if(PostOrderTraval(pTree->rChild))
                {
                    if(Visit(pTree->Data))
                    {
                        return OK;
                    }
                    return ERROR;
                }
            }
            return ERROR;
        }
        else
        {
            return OK;
        }
    }
    status Visit(char Data)
    {
        printf("%c",Data);
        return OK;
    }
    status Display(BiNode* pTree,int Level)
    {
        int i;
        if(pTree==NULL) return;
        Display(pTree->lChild,Level+1);
       for(i=0;i<Level-1;i++)
        {
            printf(" ");

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论