二叉树--已知前序遍历和中序遍历,输出后续遍历
2012-04-02 20:44
387 查看
原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7422336
已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
输入说明:仅一组数据,分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。
输出说明:在一行上输出该二叉树的后序序列。
输入样本:
ABDGCEFH
DGBAECHF
输出样本:
GDBEHFCA
简单 源码如下:
#include <stdio.h>
#include <string.h>
#define MAX 101
char preoder[MAX];
char inoder[MAX];
void build(int preleft,int preright,int inleft,int inright)
{
int i,lsize,rsize;
if(preleft <= preright && inleft <= inright)
{
for(i = inleft;i <= inright;i++)//在中序遍历中查找根结点
{
if(preoder[preleft] == inoder[i]) break;
}
lsize = i - inleft;
rsize = inright - i;
//递归创建左子树
if(lsize > 0) build(preleft + 1,preleft + lsize,inleft,i - 1);
//递归创建右子树
if(rsize > 0) build(preleft + 1 + lsize,preright,i + 1,inright);
//输出根结点
printf("%c",preoder[preleft]);
}
}
int main()
{
//freopen("input","r",stdin);
scanf("%s %s",preoder,inoder);
int psize,insize;
psize = strlen(preoder);
insize = strlen(inoder);
build(0,psize - 1,0,insize - 1);
return 0;
}
已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
输入说明:仅一组数据,分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。
输出说明:在一行上输出该二叉树的后序序列。
输入样本:
ABDGCEFH
DGBAECHF
输出样本:
GDBEHFCA
简单 源码如下:
#include <stdio.h>
#include <string.h>
#define MAX 101
char preoder[MAX];
char inoder[MAX];
void build(int preleft,int preright,int inleft,int inright)
{
int i,lsize,rsize;
if(preleft <= preright && inleft <= inright)
{
for(i = inleft;i <= inright;i++)//在中序遍历中查找根结点
{
if(preoder[preleft] == inoder[i]) break;
}
lsize = i - inleft;
rsize = inright - i;
//递归创建左子树
if(lsize > 0) build(preleft + 1,preleft + lsize,inleft,i - 1);
//递归创建右子树
if(rsize > 0) build(preleft + 1 + lsize,preright,i + 1,inright);
//输出根结点
printf("%c",preoder[preleft]);
}
}
int main()
{
//freopen("input","r",stdin);
scanf("%s %s",preoder,inoder);
int psize,insize;
psize = strlen(preoder);
insize = strlen(inoder);
build(0,psize - 1,0,insize - 1);
return 0;
}
相关文章推荐
- 已知一颗二叉树S的前序遍历和中序遍历 序列,请编程输出二叉树S的后续遍历序列.
- 二叉树--已知前序遍历和中序遍历,输出后续遍历
- 已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历的结果,输出后序遍历结果。
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
- 已知二叉树的先序(前序)遍历及中序遍历,还原该二叉树并输出其后续遍历
- <转> - 新浪博客 - 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- 已知二叉树的前序遍历和中序遍历,如何得到它的后序遍历?
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的前序遍历和中序遍历的结果,重建二叉树
- 由前序遍历和中序遍历重建二叉树,再实现后续遍历
- 已知二叉树的中序和后序遍历排列,求前序遍历
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的前序遍历和中序遍历,如何得到它的后序遍历?
- 已知二叉树的后序/前序遍历和中序遍历,求前序/中序遍历
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知前序遍历和中序遍历,重建二叉树