前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树

二叉树

原创
作者头像
后端码匠
修改2021-08-18 14:24:10
2020
修改2021-08-18 14:24:10
举报
文章被收录于专栏:后端码匠
代码语言:txt
复制
#include "stdio.h"
#include "stdlib.h"

#undef OK
#define OK 1
#undef ERROR
#define ERROR 0
#undef OVERFLOW
#define OVERFLOW -2
#undef NULL
#define NULL 0
typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{ // 结点结构
    TElemType data;
    struct BiTNode *lchild, *rchild; // 左右孩子指针
} BiTNode, *BiTree;
//以下是建立二叉树存储结构
Status CreateBiTree(BiTree &T)
{
    char ch;
    scanf("%c", &ch);
    if (ch == '#')
        T = NULL;
    else
    {
        //请在此填写代码,将该算法补充完整,参见书本和课件相关章节
        T = (BiTNode *)malloc(sizeof(BiTNode));
        T->data = ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
    return OK;
}

/**先序遍历  根左右**/
void PreOrder(BiTree T)
{
    if (T)
    {
        printf("%4c", T->data); // 访问结点
        //请在此填写代码,将该算法补充完整,参见书本和课件相关章节
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

/**中序遍历 左根右**/
void InOrder(BiTree T)
{
    if (T)
    {
        //请在此填写代码,将该算法补充完整,参见书本和课件相关章节
        InOrder(T->lchild);
        printf("%4c", T->data);
        InOrder(T->rchild);
    }
}

/**后序遍历 左右根**/
void PostOrder(BiTree T)
{
    //请在此填写代码,将该算法补充完整,参见书本和课件相关章节
    if (T)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        printf("%4c", T->data);
    }
}

int main()
{
    BiTree T;
    int s = 0, m = 0, n = 0, d = 0;
    T = NULL;
    printf("\n 请按先序次序输入各结点的值,以#表示空树:\n");
    CreateBiTree(T);
    printf("二叉树已建立完毕!\n");
    printf("\n 先序遍历:");
    PreOrder(T);
    printf("");

    printf("\n 中序遍历:");
    InOrder(T);
    printf("");

    printf("\n 后序遍历:");
    PostOrder(T);
    printf("\n");
    return 0;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档