创作

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

3天内不再提示

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

GFOe_xx_cyy 来源: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语言
    +关注

    关注

    165

    文章

    5918

    浏览量

    111387
  • 编程
    +关注

    关注

    84

    文章

    2342

    浏览量

    86671
  • 二叉树
    +关注

    关注

    0

    文章

    43

    浏览量

    11078
收藏 人收藏

    评论

    相关推荐

    在c语言中的位域(位段)是如何去定义的?有哪些限制呢

    在c语言中提供一个一种叫 “位域” 或者 “位段” 的数据结构。它的存在是为了更加的节省空间。因为在有些实际需求中,并不需要占...
    发表于 07-01 15:52 1029次 阅读

    什么是堆内存与栈内存?它们的分配和回收有什么特点?

    栈空间的大小是固定的,它有一个水位线,标识栈空间的分配状态,水位线里面的表示已经分配,然后这个水位线....
    的头像 一口Linux 发表于 07-01 10:33 83次 阅读

    机器人编程教育对孩子会有哪些帮助

    通知对义务教育阶段校外培训学科类和非学科类进行了明确划分,其中信息技术教育归为综合实践活动,划入非学....
    的头像 格物斯坦机器人 发表于 06-30 18:15 22次 阅读

    C语言函数速查手册

    c\c++语言函数速查手册
    发表于 06-30 14:48 14次 阅读

    Tezos India和TZ APAC联合宣布举行Tezos黑客松TEZASIA

    新加坡——2022年6月29日:Tezos India和TZ APAC联合宣布举行亚洲最大的Tezo....
    的头像 科技数码 发表于 06-30 13:44 30次 阅读

    MISRA C可用于提高软件质量考虑

      通过定义 C 语言的可预测子集并为开发人员提供指导,MISRA C 为嵌入式控制系统和独立软件的....
    发表于 06-30 09:27 82次 阅读

    ARM和DSP算是嵌入式的硬件还是软件方向?编程用的是C语言吗

    ARM和DSP算是嵌入式的硬件还是软件方向?编程用的是C语言吗?求解答 ...
    发表于 06-29 15:49 1002次 阅读

    使用SPARK和Ada进行代码清理

      Ada 和 SPARK 方法的独特之处在于它集成了软件规范、实现和验证,提供了一种以现代系统所需....
    的头像 星星科技指导员 发表于 06-29 14:33 129次 阅读
    使用SPARK和Ada进行代码清理

    C语言编程规范 ISO/IEC 9899:1999

    C语言编程规范,ISO/IEC 9899:1999
    发表于 06-27 15:13 12次 阅读

    XHRadarView iOS仿雷达扫描界面

    ./oschina_soft/XHRadarView.zip
    发表于 06-27 09:55 9次 阅读
    XHRadarView iOS仿雷达扫描界面

    ThinkVerb基于CoreAnimation的动画库

    ./oschina_soft/ThinkVerb.zip
    发表于 06-24 14:50 9次 阅读
    ThinkVerb基于CoreAnimation的动画库

    EasyReact美团客户端响应式框架

    ./oschina_soft/EasyReact.zip
    发表于 06-24 14:32 3次 阅读
    EasyReact美团客户端响应式框架

    ReactiveObjC objective-C的函数响应式编程框架

    ./oschina_soft/ReactiveObjC.zip
    发表于 06-24 14:26 10次 阅读
    ReactiveObjC objective-C的函数响应式编程框架

    BeeHive iOS模块化编程框架

    ./oschina_soft/BeeHive.zip
    发表于 06-24 10:08 17次 阅读
    BeeHive iOS模块化编程框架

    龙芯中科LoongBlock青少年编程平台助力“双减”工作落实落地

    近日,江苏省青少年科技中心公布第一批科教资源“双进”助推“双减”开展课后服务单位名单,龙芯中科成功入....
    的头像 科技绿洲 发表于 06-23 17:42 425次 阅读

    关于C#课程总结

    利用C#语言,我第一次设计成功一个窗体程序,这使我充满继续学习C#的兴趣。随着课程的深入,我越发感觉....
    发表于 06-23 15:14 12次 阅读

    gft4c生成函数声明列表工具

    ./oschina_soft/gft4c.zip
    发表于 06-23 14:50 12次 阅读
    gft4c生成函数声明列表工具

    Tinn C语言实现的微型神经网络库

    ./oschina_soft/tinn.zip
    发表于 06-23 14:40 12次 阅读
    Tinn C语言实现的微型神经网络库

    open62541 OPC UA规范的C语言实现

    ./oschina_soft/open62541.zip
    发表于 06-23 10:14 18次 阅读
    open62541 OPC UA规范的C语言实现

    C语言的具体结构与基本数据类型

    简单来说,一个C程序就是由若干头文件和函数组成。
    的头像 STM32嵌入式开发 发表于 06-22 15:35 216次 阅读

    康耐视培训资料

    康耐视培训ppt
    发表于 06-22 15:08 11次 阅读

    安富莱C语言编码规范

    以下提供两种命名方式以供参考:(1)各程序模块的文件命名开头 2 个小写字母代表本模块的功能:如:主....
    的头像 硬件攻城狮 发表于 06-22 14:38 151次 阅读

    cpp-taskflow C++并行任务编程库

    ./oschina_soft/cpp-taskflow.zip
    发表于 06-22 10:34 16次 阅读
    cpp-taskflow C++并行任务编程库

    fastcxml xml解析库

    ./oschina_soft/gitee-fastxm<x>l.zip
    发表于 06-22 10:31 13次 阅读
    fastcxml xml解析库

    C语言的面向接口编程

    其实bug菌这么多年开发过来,真正把C完完全全用面向对象的方式进行编写是非常少的,像C++中的继承、....
    的头像 FPGA之家 发表于 06-22 09:37 132次 阅读

    RTTR在C++中加入反射式编程

    ./oschina_soft/rttr.zip
    发表于 06-21 11:42 11次 阅读
    RTTR在C++中加入反射式编程

    AWTK-MVVM C语言MVVM框架

    ./oschina_soft/gitee-awtk-mvvm.zip
    发表于 06-21 11:33 12次 阅读
    AWTK-MVVM C语言MVVM框架

    开源软件-Libcsp高性能C语言并发库

    ./oschina_soft/libcsp.zip
    发表于 06-21 10:35 9次 阅读
    开源软件-Libcsp高性能C语言并发库

    如何利用C语言去调用rust静态库呢

    引言 工作中的嵌入式项目,基本都是C语言。 一直想在项目中引入一个略高级的语言,来填补C语言的一些不足。 之前有用过Mic...
    发表于 06-21 10:27 886次 阅读

    在rust中调用C语言并实现字符串打印

    上篇实现了C调用rust。 此篇计划实现在rust中调用c,并实现字符串打印。 更新lib.rs extern "C" { fn test_putcha...
    发表于 06-21 10:20 831次 阅读

    LIB-ZO C语言协程库

    ./oschina_soft/gitee-lib-zo.zip
    发表于 06-21 10:05 7次 阅读
    LIB-ZO C语言协程库

    libspng PNG图片读写库

    ./oschina_soft/libspng.zip
    发表于 06-21 09:41 3次 阅读
    libspng PNG图片读写库

    C语言和C++到底是什么关系

    首先C++和C语言本来就是两种不同的编程语言,但C++确实是对C语言的扩充和延伸,并且对C语言提供后....
    的头像 一口Linux 发表于 06-20 11:28 161次 阅读

    如何解决并发 C 应用程序中的多线程问题

    本文描述如何使用 C 编程语言和标准 POSIX 线程。 使用互斥锁和信号量管理并发访问 如前所述,并发写入操作可能会导致...
    发表于 06-20 09:58 2416次 阅读
    如何解决并发 C 应用程序中的多线程问题

    嵌入式软件设计模式 好文值得收藏

    本文引用自本人公众号文章: 嵌入式开发中的两点编程思想   C语言也很讲究设计模式?一文讲透   包....
    的头像 lucky的记录与分享 发表于 06-20 09:09 201次 阅读

    C语言实现txt文本读取与修改

    #include #include #include int main(){FILE *fp = f....
    的头像 嵌入式应用开发 发表于 06-17 17:06 621次 阅读
    C语言实现txt文本读取与修改

    c语言实现一元线性回归

    第一:用所给样本求出两个相关变量的(算术)平均值 第二:分别计算分子和分母:(两个公式任选其一)分子....
    的头像 嵌入式应用开发 发表于 06-17 16:16 365次 阅读
    c语言实现一元线性回归

    C语言怎么跳出while函数

    在C语言中while函数是经常用到的,这里说一下可以跳出while函数的几种方法。
    的头像 嵌入式应用开发 发表于 06-17 15:40 251次 阅读
    C语言怎么跳出while函数

    raylib简单易用的视频游戏编程库

    ./oschina_soft/raylib.zip
    发表于 06-17 15:22 27次 阅读
    raylib简单易用的视频游戏编程库

    cpufetch CPU信息获取命令行工具

    ./oschina_soft/cpufetch.zip
    发表于 06-17 15:02 23次 阅读
    cpufetch CPU信息获取命令行工具

    怎样用C语言去启动SOC验证环境呢

    上次说到CPU的boot,今天说说SOC环境的另外一种启动方式。用C启动SOC验证环境有几个问题。 一是CPU boot过程比较慢...
    发表于 06-17 14:41 710次 阅读

    SameBoy开源的Game Boy模拟器

    ./oschina_soft/SameBoy.zip
    发表于 06-17 11:28 12次 阅读
    SameBoy开源的Game Boy模拟器

    cwb C语言网络框架

    ./oschina_soft/gitee-cwb.zip
    发表于 06-17 10:20 121次 阅读
    cwb C语言网络框架

    将JS/TS代码生成可读的C89代码的转译工具ts2c

    ./oschina_soft/ts2c.zip
    发表于 06-17 10:00 17次 阅读
    将JS/TS代码生成可读的C89代码的转译工具ts2c

    ccls C/C++/ObjC语言服务器

    ./oschina_soft/ccls.zip
    发表于 06-17 09:32 17次 阅读
    ccls C/C++/ObjC语言服务器

    C语言如何注释以及在哪儿注释

    文件注释描述了该文件的内容,如果一个文件只声明,或实现,或测试了一个对象,并且这个对象已经在它的声明....
    的头像 strongerHuang 发表于 06-17 09:22 186次 阅读

    C语言指针相关的概念、语法及使用场景

    如果问C语言中最重要、威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便、高效,同时也意味....
    的头像 硬件攻城狮 发表于 06-16 15:59 344次 阅读

    怎样去设计ARM Linux系统下的c语言程序呢

    正所谓:工欲善其事必先利其器 开发环境ip地址配置如下:windows工作主机地址为:192.168.1.101 linux宿主机 eth0 ip地址为19...
    发表于 06-16 14:48 551次 阅读

    常用优化编译选项对ARM平台的影响

    我们知道在C语言编译时,有那么几个常用的优化编译选项,分别是-O0,-O1,-O2,-O3以及-Os。之前一直觉得既然是优化选项,顶多...
    发表于 06-16 14:38 470次 阅读

    Cmark C版本Markdown解析器

    ./oschina_soft/cmark.zip
    发表于 06-16 14:24 8次 阅读
    Cmark C版本Markdown解析器

    Littlewolf C语言编写的图形引擎

    ./oschina_soft/littlewolf.zip
    发表于 06-16 14:23 10次 阅读
    Littlewolf C语言编写的图形引擎

    MuJoCo多关节动力学物理引擎

    ./oschina_soft/mujoco.zip
    发表于 06-16 10:56 15次 阅读
    MuJoCo多关节动力学物理引擎

    Arb任意精度区间算法C库

    ./oschina_soft/arb.zip
    发表于 06-16 10:25 12次 阅读
    Arb任意精度区间算法C库

    Puerts游戏引擎Typescript编程解决方案

    ./oschina_soft/puerts.zip
    发表于 06-16 10:00 7次 阅读
    Puerts游戏引擎Typescript编程解决方案

    Notcurses丰富的字符图形/TUI库

    ./oschina_soft/notcurses.zip
    发表于 06-16 09:17 12次 阅读
    Notcurses丰富的字符图形/TUI库

    在标准C语言中编译出来的可执行程序

    在标准C语言中,编译出来的可执行程序分为代码区(text)、数据区(data)和未初始化数据区(bs....
    的头像 嵌入式应用开发 发表于 06-16 09:01 266次 阅读
    在标准C语言中编译出来的可执行程序

    wchlink编程或校验失败的原因?

    接错了一次线,wchlink 下载就一直出现这个情况,要怎么解决呢      ...
    发表于 06-15 08:30 137次 阅读

    MCU说明书说有CH549的c语言,但是评估板例程包里没有,求大神帮忙

    MCU说明书说有CH549的c语言,但是评估板例程包里没有,请版主帮忙找一下,谢谢      ...
    发表于 06-15 06:01 57次 阅读