0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言编程中如何求出二叉树后序遍历

C语言编程基础 来源:CSDN博客 作者:mcl19909949541 2021-08-23 11:04 次阅读

题目

已知二叉树前序为 ABDFGCEH 后序序列为 BFDGACEH ,要求输出后序遍历为 FGDBHECA

大体思路

又先序得出根,先序的根后为左树一部分,我们再在中序序列里找到先序的根,此处之前即为左树(可以画图好好理解下),此处之后为右树。然后就是不断递归即可。

代码

#include

#include

#include

#define MAX 100

typedef struct Node{

char data;

struct Node *Lchild;

struct Node *Rchild;

}BiTNode,*Bitree;

void PreTree(Bitree T) //后序输出树

{ if(T==NULL) return;

PreTree(T-》Lchild);

PreTree(T-》Rchild);

printf(“%c”,T-》data);

}

char pre[MAX];

char mid[MAX];

int MidFind(int left,int right,char MID)

{

for(int i=left;i

{

if(mid[i]==MID) return i;

}

return 0;

}

void Create(int left,int right,int *i,BiTNode **T) //此题建立树得先将孩子结点赋NULL,因为没有用户输入以确定什么时候把某个具体的结点赋为NULL

{//这是第一种创建二叉树的写法(二级指针法)

//这种感觉是把指针送进函数处理

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

(*T)-》data=pre[*i];

(*T)-》Lchild=NULL;

(*T)-》Rchild=NULL;

(*i)++;

int midnumber = MidFind(left,right,(*T)-》data);

if(midnumber》left)

{

Create(left,midnumber-1,i,(&((*T)-》Lchild)));

}

if(midnumber

{

Create(midnumber+1,right,i,(&((*T)-》Rchild)));

}

}

BiTNode* Create2(int left,int right,int *i)

{//第二中创建方式(注意返回!!!)

//这种感觉是把指针让函数处理(自己不进去)

BiTNode *T;

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

T-》data=pre[*i];

T-》Lchild=NULL;

T-》Rchild=NULL;

(*i)++;

int midnumber = MidFind(left,right,T-》data);

if(midnumber》left)

{

T-》Lchild = Create2(left,midnumber-1,i);

}

if(midnumber

{

T-》Rchild = Create2(midnumber+1,right,i);

}

return T;

}

int main()

{

memset(pre,0,MAX);

memset(mid,0,MAX);

gets(pre);

gets(mid);

int left,right,len,i=0;

len=strlen(pre);

left=0;

right=len-1;

BiTNode *T=(Bitree)malloc(sizeof(BiTNode)); //这里可以不用分配空间,因为在函数里会进行分配

Create(left,right,&i,&T);

PreTree(T);

return 0;

}

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7602

    浏览量

    136359
  • 编程
    +关注

    关注

    88

    文章

    3600

    浏览量

    93629
  • 二叉树
    +关注

    关注

    0

    文章

    74

    浏览量

    12315

原文标题:C语言编程:已知二叉树前序和中序,如何求出后序遍历?

文章出处:【微信号:xx-cyy,微信公众号:C语言编程基础】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编程语言的误区与常见问题

    : 选择编程语言时,应考虑项目需求、个人兴趣以及语言的适用性。例如,如果你对Web开发感兴趣,那么学习JavaScript可能是一个好选择。 认识到没有一种编程
    的头像 发表于 11-15 09:35 217次阅读

    NPU支持的编程语言有哪些

    与NPU一起使用: C/C++ : CC++是性能要求较高的应用的首选语言,尤其是在需要直接与硬件交互的场景
    的头像 发表于 11-15 09:21 457次阅读

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,
    的头像 发表于 11-01 16:51 262次阅读

    MCU编程语言和开发环境介绍

    微控制器单元(Microcontroller Unit,简称MCU)是嵌入式系统的核心,广泛应用于各种电子产品。随着技术的发展,MCU编程语言和开发环境也在不断进步,以适应不同的应用需求。 1.
    的头像 发表于 11-01 11:51 552次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对
    的头像 发表于 10-29 17:31 234次阅读

    C语言与其他编程语言的比较

    C语言作为一种历史悠久的编程语言,自其诞生以来,一直在软件开发领域扮演着重要角色。它以其高效、灵活和可移植性强的特点,成为了系统级编程的首选
    的头像 发表于 10-29 17:30 203次阅读

    Orin芯片的编程语言支持

    语言支持 Orin芯片支持多种编程语言,以满足不同开发者的需求。其中,C/C++和Python是两种广泛应用的
    的头像 发表于 10-27 16:45 216次阅读

    plc编程语言编程相关技巧有哪些

    Function Chart, SFC)等。这些编程语言各有特点,适用于不同的应用场景。 梯形图(LD) : 梯形图是最常用的PLC编程语言,它类似于电气控制线路
    的头像 发表于 10-21 16:56 253次阅读

    什么是默克尔(Merkle Tree)?如何计算默克尔根?

    01 默克尔的概念 默克尔(Merkle Tree)是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。哈希值是一种可以将任意长度的数据转换为固定长度的字符串的算法,它具有唯一性和不可
    的头像 发表于 09-30 18:22 657次阅读
    什么是默克尔<b class='flag-5'>树</b>(Merkle Tree)?如何计算默克尔根?

    plc编程st语言怎么编

    PLC(可编程逻辑控制器)编程的ST(Structured Text)语言是一种高级编程语言
    的头像 发表于 08-25 10:05 969次阅读

    PLC编程语言C语言的区别

    在工业自动化和计算机编程领域中,PLC(可编程逻辑控制器)编程语言C语言各自扮演着重要的角色。
    的头像 发表于 06-14 17:11 2614次阅读

    嵌入式系统C语言结构体的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。
    发表于 03-12 14:29 452次阅读
    嵌入式系统<b class='flag-5'>中</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>结构体的基础实现与应用

    plc编程语言c语言的联系 c语言和PLC有什么区别

    PLC编程语言C语言的联系 PLC(可编程逻辑控制器)是一种针对自动化控制系统的特殊计算机。PLC编程
    的头像 发表于 02-05 14:21 3945次阅读

    c语言,c++,java,python区别

    C语言C++、Java和Python是四种常见的编程语言,各有优点和特点。 C
    的头像 发表于 02-05 14:11 2289次阅读

    vb语言c++语言的区别

    VB语言C++语言是两种不同的编程语言,虽然它们都属于高级编程
    的头像 发表于 02-01 10:20 2100次阅读