数据结构-二叉树后序遍历

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

struct BTNode
{
    char data;
    struct BTNode *pLchild;
    struct BTNode *pRchild;
};

static struct BTNode *CreateBTree(void);
static void PostTraverseBTree(struct BTNode *);
static void DisPlayElem(struct BTNode *);

int main(int argc, char *argv[])
{
    struct BTNode *pT = CreateBTree();

    PostTraverseBTree(pT);
    printf("\r\n");

    return 1;
}

static struct BTNode *CreateBTree(void)
{
    struct BTNode *pA = (struct BTNode *)malloc(sizeof(struct BTNode));
    struct BTNode *pB = (struct BTNode *)malloc(sizeof(struct BTNode));
    struct BTNode *pC = (struct BTNode *)malloc(sizeof(struct BTNode));
    struct BTNode *pD = (struct BTNode *)malloc(sizeof(struct BTNode));
    struct BTNode *pE = (struct BTNode *)malloc(sizeof(struct BTNode));

    pA->data = 'A';
    pB->data = 'B';
    pC->data = 'C';
    pD->data = 'D';
    pE->data = 'E';

    pA->pLchild = pB;
    pA->pRchild = pC;

    pB->pLchild = pB->pRchild = NULL;
    
    pC->pLchild = pD;
    pC->pRchild = NULL;

    pD->pLchild = NULL;
    pD->pRchild = pE;

    pE->pLchild = pE->pRchild = NULL;

    return pA;
}

static void DisPlayElem(struct BTNode *pT)
{
    printf("%c ", pT->data);

    return;
}

static void PostTraverseBTree(struct BTNode *pT)
{
    if (pT)
    {
        PostTraverseBTree(pT->pLchild);
        PostTraverseBTree(pT->pRchild);
        DisPlayElem(pT);
    }

    return;
}

/* output
B E D C A
*/
发布了124 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/tyustli/article/details/103639743