机试指南-根据二叉树的前序和中序确定后序序列
2018-03-10 22:23
399 查看
不难。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
node *lchild;
node *rchild;
char c;
}tree[50];
int loc;
node *creat()
{
tree[loc].lchild=tree[loc].rchild=NULL;
return &tree[loc++];
}
char str1[30],str2[30];
void postorder(node *t)
{
if(t->lchild!=NULL){
postorder(t->lchild);
}
if(t->rchild!=NULL){
postorder(t->rchild);
}
printf("%d",t->c);
}
node *bulid(int s1,int e1,int s2,int e2)
{
node *ret=creat();
ret->c=str1[s1];
int rootid;
for(int i=s2;i<e2;i++)
{
if(str2[i]==str1[s1])
{
rootid=i;
break;
}
}
if(rootid!=s2){
ret->lchild=bulid(s1+1,s1+(rootid-s2),s2,rootid-1);
}
if(rootid!=e2){
ret->rchild=bulid(s1+(rootid-s2)+1,e1,rootid+1,e2);
}
return ret;
}
int main()
{
int l1,l2;
loc=0;
while(scanf("%s",str1)!=EOF)
{
scanf("%s",str2);
l1=strlen(str1);
l2=strlen(str2);
node *t=bulid(0,l1-1,0,l2-1);
postorder(t);
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
node *lchild;
node *rchild;
char c;
}tree[50];
int loc;
node *creat()
{
tree[loc].lchild=tree[loc].rchild=NULL;
return &tree[loc++];
}
char str1[30],str2[30];
void postorder(node *t)
{
if(t->lchild!=NULL){
postorder(t->lchild);
}
if(t->rchild!=NULL){
postorder(t->rchild);
}
printf("%d",t->c);
}
node *bulid(int s1,int e1,int s2,int e2)
{
node *ret=creat();
ret->c=str1[s1];
int rootid;
for(int i=s2;i<e2;i++)
{
if(str2[i]==str1[s1])
{
rootid=i;
break;
}
}
if(rootid!=s2){
ret->lchild=bulid(s1+1,s1+(rootid-s2),s2,rootid-1);
}
if(rootid!=e2){
ret->rchild=bulid(s1+(rootid-s2)+1,e1,rootid+1,e2);
}
return ret;
}
int main()
{
int l1,l2;
loc=0;
while(scanf("%s",str1)!=EOF)
{
scanf("%s",str2);
l1=strlen(str1);
l2=strlen(str2);
node *t=bulid(0,l1-1,0,l2-1);
postorder(t);
printf("\n");
}
return 0;
}
相关文章推荐
- 根据先中序序列或后中序序列确定二叉树
- 根据前序和中序遍历序列重构二叉树 代码完整版
- 如何根据前序遍历序列和中序遍历序列确定二叉树
- 剑指offer_根据前序和中序确定二叉树
- 根据二叉树的前序和中序序列来重建二叉树
- 根据前序和中序序列确定二叉树
- 如何根据前序遍历序列和中序遍历序列确定二叉树
- 【构建二叉树】01根据前序和中序序列构造二叉树【Construct Binary Tree from Preorder and Inorder Traversal】
- 算法竞赛入门经典:第六章 数据结构基础 6.9 根据二叉树的后序和中序确定前序序列
- POJ 2255 根据二叉树的前序和中序序列来重建二叉树
- 二叉树根据前序和中序确定二叉树
- 如何根据一棵二叉树的前序、中序序列,勾造一棵二叉树。
- 已知一颗二叉树的前序和中序序列,唯一的确定一颗二叉树
- [面试] 根据前序和中序重建二叉树,并且中序非递归遍历
- poj2255 根据二叉树的前序和中序遍历 求出树的后序遍历
- 二叉树根据前序遍历和中序遍历重构确定唯一二叉树
- 根据前序和中序序列重建二叉树 Construct Binary Tree from Preorder and Inorder Traversal
- [面试] 根据前序和中序重建二叉树,并且中序非递归遍历
- 经典二叉树问题 根据前序和中序生成后序
- 根据前序和中序创建二叉树