已知前序中序求后续
来源:互联网 发布:中国企业寿命统计 知乎 编辑:程序博客网 时间:2024/04/29 09:16
#include<stdio.h>
#include<string.h>
char
pre[26];
char
in[26];
char
post[26];
/**三个low和high分别是pre,in和post的起止位置*/
void
Post(
int
low1,
int
high1,
int
low2,
int
high2,
int
low,
int
high)
{
if
(low>high)
return
;
char
c=pre[low1];
post[high]=c;
/**把pre[]第一个字符赋给post[]最后一个位置*/
int
k=0;
while
(in[low2+k]!=c)
/**找到pre[]第一个字符在in[]中的位置*/
k++;
Post(low1+1,low1+k,low2,low2+k-1,low,low+k-1);
Post(low1+k+1,high1,low2+k+1,high2,low+k,high-1);
return
;
}
int
main()
{
while
(
scanf
(
"%s"
,pre)!=EOF)
{
scanf
(
" %s"
,in);
int
len=
strlen
(pre);
Post(0,len-1,0,len-1,0,len-1);
printf
(
"%s"
,post);
printf
(
"\n"
);
}
return
0;
}
#include <iostream>
#include <cstring>
using
namespace
std;
typedef
struct
BinaryTree
{
char
data;
BinaryTree* lchild;
BinaryTree* rchild;
}BinaryTree;
void
RebuildTree(BinaryTree* &Tree,
char
* pre,
char
* in,
int
len)
{
Tree = (BinaryTree*)
malloc
(
sizeof
(BinaryTree));
if
(Tree!=NULL)
{
if
(len<=0)
{
//递归截止条件
Tree = NULL;
return
;
}
int
index = 0;
while
(index<len&&*(pre)!=*(in+index))
{
//寻找当前的root结点(包含子树)
index++;
}
Tree->data = *(pre);
RebuildTree(Tree->lchild,pre+1,in,index);
//去掉root结点
RebuildTree(Tree->rchild,pre+1+index,in+1+index,len-(index+1));
//去掉左边和根节点
}
return
;
}
void
PostOrderTravese(BinaryTree* Tree)
{
//后序遍历输出
if
(Tree==NULL)
return
;
PostOrderTravese(Tree->lchild);
PostOrderTravese(Tree->rchild);
printf
(
"%c"
,Tree->data);
}
int
main()
{
char
pre[101];
char
in[101];
while
(
scanf
(
"%s %s"
,pre,in)!=EOF)
{
BinaryTree* tree;
int
length =
strlen
(pre);
RebuildTree(tree,pre,in,length);
PostOrderTravese(tree);
cout<<endl;
}
return
0;
}
阅读全文
0 0
- 已知前序中序求后续
- hdu 1710已知先序中序求后续
- 已知树先序中序遍历,求后续 【java】
- 数据结构,二叉树已知后续中序,建树,层次遍历;
- 已知前序中序遍历,求树的后续遍历
- 后续
- 后续
- 二叉树--已知前序遍历和中序遍历,输出后续遍历
- 已知二叉树前序遍历和中序遍历,求后续遍历
- 数据结构 二叉树 已知前序中序遍历求后续遍历的递归实现
- 1119. Pre- and Post-order Traversals (已知前序后续求中序)
- 重建二叉树 的 非递归算法(已知前序和中序)输出 层续和后续
- 二叉树遍历,已知前序遍历与中序遍历,求后续遍历 使用java(递归方式)实现
- 已知二叉树的先序(前序)遍历及中序遍历,还原该二叉树并输出其后续遍历
- 已知一颗二叉树S的前序遍历和中序遍历 序列,请编程输出二叉树S的后续遍历序列.
- 已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。
- 出卖(后续)
- 端午节后续
- String,StringBuffer,StringBuilder
- quartz原理及常用对象
- 【Spring源码--IOC容器的实现】-- 综述
- BaseItemAnimator
- 试发第一篇:linux内核理解,最关键是的真正的理解内核同步机制
- 已知前序中序求后续
- KNN-临近算法
- 获取手机型号等信息
- 《现代操作系统(中文第三版)》课后习题——第八章 多处理机系统
- 文章标题
- java知识J2EE必备技能
- eclipse使用之修改工作空间的字符集
- c语言中[Error] variable or field 'CreatList' declared void错误原因分析
- Java的引用类型转换