题目:
给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)
解题思路:
分治+递归求解
先输出后序串的最后一个元素,然后以后序串的最后一个节点为界限,可以将中序串分为左右两个子串,左子串表示左孩子S1,右子串表示右孩子S2。并作为新的中序串。将S1、S2的内容分别按照原后序串的节点顺序更新成新的后序串s1、s2。
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[30],str2[30];//str1存放后序串 str2存放中序串
void find(char str1[],char str2[]);
while(~scanf("%s%s",str1,str2)){
find(str1,str2);
printf("\n");
}
return 0;
}
void find(char str1[],char str2[])
{
int len,i;
char s1[30],s2[30],S1[30],S2[30];
len=strlen(str1);
if(len==0)
return ;//如果字符串长度为0,停止函数运行
printf("%c",str1[len-1]);
if(len==1)//输出节点后,如果字符串长度为1,返回函数
return ;