创作

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

3天内不再提示

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

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语言编程:已知二叉树前序和中序,如何求出后序遍历?

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

收藏 人收藏

    评论

    相关推荐

    S7-200/300高级编程培训知识

    一本西门子PLC高级编程的书籍,对从事自动控制领域内的人员来说有重要的参考价值!
    发表于 05-16 15:32 1次 阅读

    Arduino编程从零开始(电子版)

    从易学易用的实例学Arduino编程:本书揭示了Arudino的软件特性,介绍了如何在Arduino....
    发表于 05-16 15:14 5次 阅读

    用C语言写出简单的加密算法

    有一套四位数加密系统,输入四位数以后会自动加密。加密规则如下:每位数字都加上 5,然后用和除以 10....
    的头像 FPGA之家 发表于 05-16 10:20 79次 阅读

    MicroProfile云原生微服务开发编程模型

    ./oschina_soft/microprofile.zip
    发表于 05-16 09:28 5次 阅读
    MicroProfile云原生微服务开发编程模型

    用FPGA解一道初中数学题

    由平方和4361末尾为1,再根据整数平方和的几种可能,计算出仅有0+1和5+6这两种可能,而且平方之....
    的头像 嵌入式ARM 发表于 05-13 14:41 122次 阅读

    C语言与C++面试知识点总结

    相对而言,C语言和C++相关的面试题比较少见,没有Java方向写的人那么多,这是一篇 C 语言与 C....
    的头像 安芯教育科技 发表于 05-13 11:59 206次 阅读

    ONetSwitch可编程交换机

    ./oschina_soft/onetswitch30.zip
    发表于 05-13 11:20 1次 阅读
    ONetSwitch可编程交换机

    POFSwitch虚拟交换机

    ./oschina_soft/POFSwitch.zip
    发表于 05-13 11:03 5次 阅读
    POFSwitch虚拟交换机

    C语言与C++面试知识点总结

    相对而言,C语言和C++相关的面试题比较少见,没有Java方向写的人那么多,这是一篇 C 语言与 C....
    的头像 嵌入式ARM 发表于 05-12 14:59 72次 阅读

    就算你是高手你也会犯的Bug

    但是这个程序,只能在Unix/Linux下工作,因为 Microsoft 的tmpfile()的实现....
    的头像 硬件攻城狮 发表于 05-12 09:46 88次 阅读

    三菱PLC编程实例之FX2N的PID程序

    三菱PLC(可编程逻辑控制器)编程实例项目例程,一个FX2N的PID程序超详细注释!
    发表于 05-11 15:02 14次 阅读

    三菱PLC编程实例之例程编写的QD75D1控制三菱伺服马达

    三菱PLC(可编程逻辑控制器)编程实例项目例程,自已编写的QD75D1控制三菱伺服马达的程式(附注释....
    发表于 05-11 15:00 16次 阅读

    三菱PLC编程实例项之自动料带长度测量变频器多段速

    三菱PLC(可编程逻辑控制器)编程实例项目例程,自动料带长度测量1113A控制变频器多段速和用接近开....
    发表于 05-11 14:58 18次 阅读

    三菱PLC编程实例项目之制冷控制系统梯形图

    三菱PLC(可编程逻辑控制器)编程实例项目例程,制冷控制系统梯形图(日本人编的,有英文注释,三菱FX....
    发表于 05-11 14:56 27次 阅读

    三菱PLC编程实例项目之饮水机生产线PLC程序

    三菱PLC(可编程逻辑控制器)编程实例项目例程,饮水机生产线PLC程序《带注释》
    发表于 05-11 14:54 16次 阅读

    三菱PLC编程实例之糖果包装称重控制

    三菱PLC(可编程逻辑控制器)编程实例项目例程,糖果包装称重控制示例。
    发表于 05-11 11:04 9次 阅读

    51单片机简单易学教材(C语言版)

    本书旨在培养和锻炼单片机系统实用开发技能,全书以实践为主线,让读者在一个个实践案例中 逐步掌握单片....
    发表于 05-10 17:37 43次 阅读

    C和C++的经典教材

    经典著作《Pointers on C》中文名《C和指针》,适合C语言有一定基础或初学者学习
    发表于 05-10 15:06 18次 阅读

    关于C语言陷阱与缺陷

    经典C语言著作,适合C语言初学者学习
    发表于 05-10 15:04 12次 阅读

    关于C语言大坑你知道嘛?

    为了不让别人篡改鱼鹰的代码,鱼鹰设计了多套机制,其中一个就是定时检查关键代码是否已执行,如果有一次没....
    的头像 嵌入式ARM 发表于 05-10 14:43 111次 阅读

    SZ/SNZ/LSZ/LSNZ指令功能及注意事项

    SZ [m] / SNZ [m] / LSZ [m] / LSNZ [m] 属于转移类型指令,其功能....
    发表于 05-10 14:40 11次 阅读
    SZ/SNZ/LSZ/LSNZ指令功能及注意事项

    AN1201模数转换器规范和指南

    AN1201 Analog to Digital Converter spec and guidan....
    发表于 05-10 14:28 9次 阅读
    AN1201模数转换器规范和指南

    cocker C语言实现的容器引擎

    ./oschina_soft/gitee-cocker.zip
    发表于 05-10 09:54 16次 阅读
    cocker C语言实现的容器引擎

    用C语言实现MD5加密算法

    一、摘要算法摘要算法又称哈希算法。它表示输入任意长度的数据,输出固定长度的数据,它的主要特征是加密过程不需要密钥,并且经...
    发表于 05-10 09:15 174次 阅读

    运维常用的34个Linux Shell脚本

    Shell 脚本编程是在 Linux 下学习或练习编程的最简单的方式。尤其对运维工程师处理着自动化任....
    的头像 Linux爱好者 发表于 05-09 15:26 144次 阅读

    如何编写优质嵌入式C程序

    本文面向的,正是使用单片机、ARM7、Cortex-M3这类微控制器的编程人员。
    的头像 STM32嵌入式开发 发表于 05-09 12:05 192次 阅读

    Keil C51-μVision4的使用

    Keil C51 µVision4 是美国 Keil Software 公司出品的 51 系列兼容单....
    发表于 05-09 11:22 12次 阅读

    wickr-crypto-c Wickr安全加密库

    ./oschina_soft/wickr-crypto-c.zip
    发表于 05-09 10:38 5次 阅读
    wickr-crypto-c Wickr安全加密库

    触摸屏软件如何添加图片

    触摸屏软件添加图片方法扩展标准库的应用方法。电脑上找到触摸屏编程软件 CoolMayHMI 的安装路....
    发表于 05-07 14:47 22次 阅读

    《C和指针》高清版资料分享

    共466页,版面很清晰,非常好的资料。有需要的可下载 ...
    发表于 05-07 10:15 7936次 阅读

    CPrimer Plus(第六版)中文版之C语言经典书籍

    CPrimer Plus(第六版)中文版之C语言经典书籍资料分享。
    发表于 05-06 17:10 31次 阅读

    三菱PLC编程实例项目例程

    三菱PLC(可编程逻辑控制器)编程实例项目例程:数控加工中心 三菱M64S +24T圆盘刀库下载。
    发表于 05-06 16:46 77次 阅读

    Ockam用于端到端加密的Rust库

    ockam.zip
    发表于 05-06 09:56 7次 阅读
    Ockam用于端到端加密的Rust库

    如何在rt-thread的env环境中配置C++11?

    1、rt-thread的env环境是否支持C++11 2、如何在rt-thread的env环境中配置C++11 ...
    发表于 05-06 09:52 1329次 阅读

    罗克韦尔(AB)RSlogix500编程教程

    最主要的菜单项“Comms”, System Comms:与控制器建立通信 Who ....
    发表于 05-05 17:20 16次 阅读

    NXP iMX6ULL开发板的WIFI接口功能测试

    一、 iMX6 ULL开发板 WIFI 功能测试 WiFi支持: 模块 支持 RTL8188EUS ....
    的头像 流川枫枫 发表于 05-05 17:02 118次 阅读

    CoDeSys软件编程用户手册

    ABB执行器调节结构
    发表于 05-05 15:57 13次 阅读

    三菱PLC(可编程逻辑控制器)编程实例项目例程

    三菱PLC(可编程逻辑控制器)编程实例项目例程免费下载。
    发表于 05-05 15:40 32次 阅读

    温度控制三菱PLC程序带注解

    三菱PLC(可编程逻辑控制器)编程实例项目例程-温度控制三菱PLC程序带注解
    发表于 05-05 15:03 31次 阅读

    “C不再是一种编程语言”

    比喻虽尖锐,依据却不无道理。几乎任何程序要做任何有用或有趣的事情,它都必须在操作系统上运行。这意味着....
    的头像 硬件攻城狮 发表于 05-05 14:43 126次 阅读

    这个错哪了,求助

    已经在c++里面把头文件路径包含了,怎么还是出错...
    发表于 05-03 13:50 1918次 阅读
    这个错哪了,求助

    C语言趣味程序百例精解

    C语言趣味程序百例精解,有需要可以下载
    发表于 04-29 16:51 11453次 阅读

    DFRobot最新推出行空板Python系列入门教程

    近日,上海智位机器人股份有限公司(简称DFRobot)推出行空板Python系列入门教程,涵盖初识行....
    的头像 话说科技 发表于 04-29 11:35 183次 阅读
    DFRobot最新推出行空板Python系列入门教程

    嵌入式开发软件中回调函数的使用

    在嵌入式开发软件中回调函数是经常接触的一种软件设计方法,像我们的事件处理机制基本上都会使用到回调函数....
    的头像 strongerHuang 发表于 04-29 08:57 410次 阅读

    如何将多个PLC连接到HMI

    大多数控制系统入门级培训包括可编程逻辑控制器 (PLC) —梯形图编程、接线输入和输出,以及标签数据....
    的头像 科技观察员 发表于 04-28 17:48 416次 阅读
    如何将多个PLC连接到HMI

    二叉树的最小深度

    遍历顺序上依然是后序遍历(因为要比较递归返回之后的结果),但在处理中间节点的逻辑上,最大深度很容易理....
    的头像 算法与数据结构 发表于 04-28 16:27 288次 阅读

    C语言里函数的定义、子函数的使用及变量的作用域

    这篇介绍C语言里函数的定义、子函数的使用。接着介绍变量的作用域,定义全局变量、静态变量、只读变量、变....
    的头像 C语言编程学习基地 发表于 04-28 11:23 331次 阅读

    如何设计一块属于自己的单片机开发板

    简易单片机开发板的设计,以及全版测试程序的开发及调试,开发板的设计的缘由,是因为班的学生,要做单片机....
    的头像 华维单片机林北 发表于 04-27 17:31 251次 阅读
    如何设计一块属于自己的单片机开发板

    IAM-20680-加中断I2C的ioctl读写问题?

    不加运动唤醒中断正常读写、添加之后报错: write ioctl error : Invalid argument write ioctl error : Remote I/O error...
    发表于 04-27 16:54 5840次 阅读

    基本语句编程的一些规则和建议

    初学者阶段编程时,编写基本语句可能会有隐含错误的方式,基本语句主要针对if、for、while、go....
    的头像 硬件攻城狮 发表于 04-27 12:53 189次 阅读

    Gitinspector git仓库统计分析工具

    gitinspector.zip
    发表于 04-27 11:26 16次 阅读
    Gitinspector git仓库统计分析工具

    彩色的LED灯是如何做出来的,LED的本质和发光原理的介绍

    LED的全称是Light Emitting Diode,意思是发光二极管,所以本质上LED也属于二极....
    的头像 华维单片机林北 发表于 04-26 16:52 210次 阅读
    彩色的LED灯是如何做出来的,LED的本质和发光原理的介绍

    C语言的数组操作

    fun1(char *ptr){         ptr[6]= 1;         ptr[5]= 2;       &nbs...
    发表于 04-25 15:13 8669次 阅读

    在OpenHarmony上使用js和c语言开发如何将日志保存在文件中?

    在应用运行过程中,一般会将日志打印在文件中保存,当应用出现问题时,通过各种途径获取到日志文件对其进行分析。 在node.js中,...
    发表于 04-25 10:11 840次 阅读

    C语言趣味程序百例精解

    C语言趣味程序百例精解,有兴趣的可以下载
    发表于 04-22 11:42 8795次 阅读

    NJS68丨浅谈C语言编程规范2

    学技术,重在日拱一卒、一点一滴的积累。 今天一起来分析C语言,编程规范2。 注释注释一般采用中文。 文件(模块)注释...
    发表于 04-21 09:26 1905次 阅读