给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)
来源:互联网 发布:院士评选 知乎 编辑:程序博客网 时间:2024/05/08 19:44
题目:
给你一棵二叉树的后序和中序序列,求出它的前序序列(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 ;
i=0;
while(str2[i]!=str1[len-1]){//以后序串最后一个元素为界限,把原中序串分成两个子串S1,S2;同时把S1,S2中的内容按后序串顺序存到s1、s2中
s1[i]=str1[i];
S1[i]=str2[i];
i++;
}
s1[i]='\0';
strcpy(s2,&str1[i]);
strcpy(S2,&str2[i+1]);
s2[len-i-1]='\0';
find(s1,S1);
find(s2,S2);
}
- 给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)
- 根据树的前序和中序序列求出后序序列
- 根据中序序列和前序序列,求二叉树的后序序列
- 根据二叉树的前序序列和中序序列得到后序序列
- 已知二叉树的前序序列和中序序列,求二叉树的后序序列
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序和前序(或者后序)序列求解树
- 已知二叉树的前序和中序序列,不建立二叉树来输出后序序列
- 由 先序遍历序列和中序遍历序列 求出 后序遍历的序列
- 根据树的后序和中序序列或者前序和中序序列构建二叉树,
- 前序遍历和中序遍历序列能确定唯一的一棵二叉树
- 由二叉树的前序遍历序列和中序遍历序列求后序遍历序列
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 《PHP经典实例学习》之变量学习笔记
- Linux系统编程
- error: no such partiton解决办法
- java:输入一个数,反转后输出
- JavaScript Source Map详解
- 给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)
- 教您破解别人QQ密码,手机上的QQ密码能破解吗?
- 《人工智能(智能系统指南,第二版)》读书笔记——7、第六章
- 水波纹
- 替换html里的换行
- hdu 1401 (双广)
- 去除winrar广告
- [Lua基础]操作系统库——Date,Time,Clock
- 搭建Android开发环境问题记录(win7)