已知
题目
二叉树的前相与ABDFGCEH的后相配列为BFDGACEH,输出后相与要求遍历到FGDBHECA
大体思路
又按先后顺序生根,先后根后是左边树的一部分,我们又在中间序列中找到了先后根,这里前是左边树,这里后是右边树。 然后递归就可以了。
代码
#包括stdio.h# #包括stdlib.h
# #包含字符串. h
# #定义最大100
类型结构节点
字符数据;
结构节点*儿童;
结构节点*子;
二进制,*二进制树;
voidpretree (比特) /后输出树
{ if (t==空值)返回;
预备(叔子);
预备(叔子);
打印机(' % c ',叔数据);
}
角色预;
卡尔米德;
intmidfind (左、右、字符mid )。
{
for (英特尔=左; I=右; I ) )
{
返回I,即if (mid==mid );
}
返回0;
}
voidcreate(intleft、int right、int *i、BiTNode **T ) /在此问题创建树中,没有用户输入,无法确定何时将特定节点分配为空值,因此孩子的节点为空
//生成二叉树的最初写法(二阶段指针法) )。
//这种感觉将指针输入函数进行处理
* * t=(二叉树)三叉树)二叉树);
(t ) -数据=预[ * I ];
(t )-lchild=空值;
(t )-rchild=空值;
(I );
int mid编号=mid find (左,右,(*T ) -数据);
if (中频)
{
创建(左,中间编号- 1,I,) () ) ) ) ) -液晶)
}
if (中小企业) )。
{
创建(中间编号1,右,I,() ) () ) (-右)
}
}
bitnode * create2(左、右、右) ) )。
//第二中制作方式(注意返回! )
//这种感觉让函数处理指针(自己不进入) )。
比特节点* t;
t=(二叉树)三叉树(二叉树);
t -数据=预[ * I ];
t-lchild=空值;
t-rchild=空值;
(I );
int mid编号=mid find (左、右、叔数据);
if (中频)
{
t-lchild=创建2 (左,中间号- 1,I );
}
if (中小企业) )。
{
t-rchild=创建2 (中间号1,右,I );
}
返回t;
}
int主() )
{
memset (预,0,最大);
memset(mid,0,MAX );
gets (预);
gets(mid;
左、右、蓝、i=0;
len=strlen (预先;
左=0;
right=len-1;
bitnode * t=(二叉树)三叉树)二叉树); //在这里不分配空间也可以。 因为在函数中分配
创建(左,右,I,t );
修正(t;
返回0;
)如果不明白的话请问我。 对于准备学习编程的伙伴,如果你想更好地提高编程的核心能力(内功),请从现在开始。
共享编程学习手册:
编程学习的视频共享:
整理和共享(多年学习的源代码、项目实战视频、项目笔记、基础入门教程) ) ) ) )。
欢迎学习转行和编程的朋友,比起利用更多的资料自己思考,还是学习成长比较快哦。
如果对C/C感兴趣的话,请关注编辑并在后台私信。 【编程交流】一起学习哦。 可以收到一些C/C的项目学习视频资料哦! 因为设定了关键字自动回复,所以自动接收就好了!