首页 / 行业
C语言编程中如何求出二叉树后序遍历
2021-08-23 11:04:00
题目
已知二叉树前序为 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;
}
最新内容
手机 |
相关内容
STC15W芯片A/D、D/A转换的简单使用
STC15W芯片A/D、D/A转换的简单使用,简单使用,转换,芯片,模拟,输入,输出,STC15W系列芯片是一种高性能的单片机芯片,具有丰富的外设资消除“间隙”:力敏传感器如何推动新
消除“间隙”:力敏传感器如何推动新颖的HMI设计,传感器,智能手机,交互,交互方式,操作,用户,随着科技的不断发展,人机交互界面(HMI)的设变频器过载保护和过流保护有什么区
变频器过载保护和过流保护有什么区别?,变频器,频率,超过,损害,方法,负载,BCP55变频器过载保护和过流保护是两种不同的保护机制,用于保应用在阀门控制中的直流有刷驱动芯
应用在阀门控制中的直流有刷驱动芯片,芯片,控制,支持,远程控制,电动,调节,直流有刷驱动芯片是一种用于控制直流电机的IPB072N15N3G全极性霍尔芯片LM224DR2G可实现共
全极性霍尔芯片LM224DR2G可实现共享充电宝中位置检测功能,位置,检测,充电,宝中,芯片,输出,全极性霍尔芯片LM224DR2G是一种用于位置开关电源供应器的功能、应用场景以
开关电源供应器的功能、应用场景以及重要性,应用场景,开关电源,高效率,超过,能源,车载充电器,开关电源供应器(Switching Power Suppl如何利用示波器快速测量幅频特性?有
如何利用示波器快速测量幅频特性?有何注意事项?,测量,示波器,连接,输入,信号,频率,利用示波器快速测量幅频特性是一种常用的方法,可以PLC控制器的主要抗干扰措施
PLC控制器的主要抗干扰措施,抗干扰,控制器,隔离,能力,输入,滤波器,PLC控制器作为一种专门用于工业自动化控制的设备,其稳定性和抗干