PAT A1086
来源:互联网 发布:分润系统源码 编辑:程序博客网 时间:2024/06/03 23:05
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define maxn 1010
typedef struct BST
{
struct BST *lchild, *rchild;
int data;
}*Bst;
int n,pre[maxn],in[maxn],post[maxn];
Bst create(int preL,int preR,int inL,int inR)//已知前序,中序 求后序
{
Bst root;
int k,numleft;
root=(Bst)malloc(sizeof(struct BST));
root->data=pre[preL];//根节点的值
if(preL>preR)
return NULL;
for(k=inL;k<inR;k++)
if(in[k]==pre[preL])
break;
numleft=k-inL;//左子树的个数;
root->lchild=create(preL+1,preL+numleft,inL,k-1);
root->rchild=create(preL+numleft+1,preR,k+1,inR);
return root;
}
int num=0;
void postOrder(Bst root)
{
if(root==NULL)
return ;
postOrder(root->lchild);
postOrder(root->rchild);
printf("%d",root->data);
num++;
if(num<n)
printf(" ");
}
int main()
{
int i,id,d[maxn],top=0,pre_num=0,in_num=0;//这里我们就用的额是一个数组模拟了一个栈,来实现功能
char str[5];
Bst root;
scanf("%d",&n);
for(i=0;i<2*n;i++)
{
scanf("%s",str);
if(strcmp(str,"Push")==0)
{
scanf("%d",&id);
pre[pre_num++]=id;
d[top++]=id;//我们入栈
}
else if(strcmp(str,"Pop")==0)
{
in[in_num++]=d[--top];//
}
//getchar();
}
root=create(0,n-1,0,n-1);
postOrder(root);
return 0;
}
#include <string.h>
#include <malloc.h>
#define maxn 1010
typedef struct BST
{
struct BST *lchild, *rchild;
int data;
}*Bst;
int n,pre[maxn],in[maxn],post[maxn];
Bst create(int preL,int preR,int inL,int inR)//已知前序,中序 求后序
{
Bst root;
int k,numleft;
root=(Bst)malloc(sizeof(struct BST));
root->data=pre[preL];//根节点的值
if(preL>preR)
return NULL;
for(k=inL;k<inR;k++)
if(in[k]==pre[preL])
break;
numleft=k-inL;//左子树的个数;
root->lchild=create(preL+1,preL+numleft,inL,k-1);
root->rchild=create(preL+numleft+1,preR,k+1,inR);
return root;
}
int num=0;
void postOrder(Bst root)
{
if(root==NULL)
return ;
postOrder(root->lchild);
postOrder(root->rchild);
printf("%d",root->data);
num++;
if(num<n)
printf(" ");
}
int main()
{
int i,id,d[maxn],top=0,pre_num=0,in_num=0;//这里我们就用的额是一个数组模拟了一个栈,来实现功能
char str[5];
Bst root;
scanf("%d",&n);
for(i=0;i<2*n;i++)
{
scanf("%s",str);
if(strcmp(str,"Push")==0)
{
scanf("%d",&id);
pre[pre_num++]=id;
d[top++]=id;//我们入栈
}
else if(strcmp(str,"Pop")==0)
{
in[in_num++]=d[--top];//
}
//getchar();
}
root=create(0,n-1,0,n-1);
postOrder(root);
return 0;
}
0 0
- PAT-A1086
- PAT A1086
- PAT a1086题解
- PAT A1086 Tree Traversals Again
- PAT A1086. Tree Traversals Again (25)
- PAT A1086 tree traversals again(25)
- A1086. Tree Traversals Again
- 刷清橙OJ--A1086.Huffuman树
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- Mac安装TensorFlow
- 决策树--ID3算法
- RequestMapping的相关知识讲解(补)
- Windows2008 R2服务器配置TLS1.2方法
- 【EJB】Developing EJB Applications -- Chapter 2(创建企业级Bean项目)
- PAT A1086
- 孙云球(二分枚举)(AOJ 851)
- 程序员面试题:排序和查找的实现(JAVA版)
- Android 编译错误:unreachable statement
- PHP发送邮件
- 前缀++和后缀++
- 【数码管/定时器/中断】一个定时器控制数码管显示
- 判断序列是否为正确的出栈序列
- InSAR Processing Wiki