code vs 1013 求先序排列

简介: 2001年NOIP全国联赛普及组题目描述 Description给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度rchild=CreateBT2(post+k,p+1,n-k-1); //递归构造右子树28 return s;29...

 2001年NOIP全国联赛普及组

题目描述 Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入描述 Input Description

两个字符串,分别是中序和后序(每行一个)

输出描述 Output Description

一个字符串,先序

样例输入 Sample Input

BADC

BDCA

样例输出 Sample Output

ABCD

 1 #include<stdio.h>
 2 #include<malloc.h>
 3 #include<string.h>
 4 typedef char ElemType;
 5 typedef struct node 
 6 {    
 7     ElemType data;            //数据元素
 8     struct node *lchild;    //指向左孩子结点
 9     struct node *rchild;    //指向右孩子结点
10 } BTNode;
11 BTNode *CreateBT2(char *post,char *in,int n)
12 /*post存放后序序列,in存放中序序列,n为二叉树结点个数,
13 本算法执行后返回构造的二叉链的根结点指针*/
14 {
15     BTNode *s;
16     char r,*p;
17     int k;
18     if(n<=0) return NULL;
19     r=*(post+n-1);                            //根结点值
20     s=(BTNode *)malloc(sizeof(BTNode));        //创建二叉树结点*s
21     s->data=r;
22     for (p=in;p<in+n;p++)                    //在in中查找根结点
23         if (*p==r)
24             break;
25     k=p-in;                                    //k为根结点在in中的下标
26     s->lchild=CreateBT2(post,in,k);            //递归构造左子树
27     s->rchild=CreateBT2(post+k,p+1,n-k-1);    //递归构造右子树
28     return s;
29 }
30 void PreOrder(BTNode *b)     /*先序遍历的递归算法*/
31 {
32     if (b!=NULL)  
33     {
34         printf("%c",b->data); /*访问根结点*/
35         PreOrder(b->lchild);
36         PreOrder(b->rchild);
37     }
38 }
39 int main(int argc, char *argv[])
40 {
41     freopen("data.in","r",stdin);
42     char in[20],post[20];
43     scanf("%s%s",in,post);
44     BTNode *root=CreateBT2(post,in,strlen(in));
45     PreOrder(root);
46     return 0;
47 }

 张泽萱的代码:

 1 #include <iostream>
 2 #include <cstring>
 3 char a[10],b[10];
 4 using namespace std;
 5 void turn(int l,int r,int st,int ed);
 6 int main(int argc, char *argv[])
 7 {
 8     int n;
 9     cin>>a>>b;//a中序,b后序 
10     n=strlen(b);
11     turn(0,n-1,0,n-1);
12     return 0;
13 }
14 void turn(int l,int r,int st,int ed)//l,r分别指向中序的开头和结束,st,ed指向后序的开头和结束 
15 {
16     int temp,i;
17     temp=b[ed]; 
18     if(l>r||st>ed)return ;
19     else 
20     {
21         cout<<char(temp);
22         for(i=l;i<=r;i++)
23         {
24             if(a[i]==temp)
25             {
26                 turn(l,i-1,st,st+i-l-1);//查左子树 
27                 turn(i+1,r,st+i-l,ed-1);//查右子树 
28                 break;
29             }
30         }
31     }
32 }

 

相关文章
|
SQL 分布式计算 数据挖掘
PySpark数据分析基础:PySpark Pandas创建、转换、查询、转置、排序操作详解
PySpark数据分析基础:PySpark Pandas创建、转换、查询、转置、排序操作详解
1218 0
PySpark数据分析基础:PySpark Pandas创建、转换、查询、转置、排序操作详解
spring3 springfox报错Type javax.servlet.http.HttpServletRequest not present
spring3 springfox报错Type javax.servlet.http.HttpServletRequest not present
1512 0
|
人工智能 自然语言处理 数据库
基于RAG和LLM的水利知识问答系统研究
随着全球水资源紧张加剧,我国面临严峻的水资源管理挑战。《十四五规划》提出构建智慧水利体系,通过科技手段提升水情测报和智能调度能力。基于大语言模型(LLM)的水利智能问答系统,利用自然语言处理技术,提供高效、准确的水利信息查询和决策支持,助力水资源管理智能化。该系统通过RAG技术和Agent功能,实现了对水利知识的深度理解和精准回答,适用于水利知识科普、水务治理建议及灾害应急决策等多个场景,推动了水利行业的信息化和智能化发展。
|
存储 移动开发 数据管理
localStorage 和 sessionStorage 的相同与不同
`localStorage` 和 `sessionStorage` 是 HTML5 提供的两种 Web 存储机制,用于在用户的浏览器中存储数据。它们都采用键值对形式存储字符串数据,并遵循同源策略,容量约为 5-10 MB。两者均支持 `setItem`、`getItem` 等方法。主要区别在于存储期限和作用域:`localStorage` 数据持久化,适用于用户偏好设置等长期存储;`sessionStorage` 数据仅限当前会话,适用于表单信息等临时数据。根据需求选择合适的存储方式可提升用户体验和数据管理效率。
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之遇到报错:HTTP状态码400,该如何处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
监控 数据可视化 BI
基于Dataphin+Flink构建期货交易监察实时应用
新一代证券交易监察系统利用大数据和实时计算技术强化风险控制、交易数据处理、识别异常交易等能力。通过Dataphin与Flink结合,构建期货交易监察实时数据应用;借助QuickBI用于打造实时看板和预警体系,实现期货交易监察的实时可视化分析和自动化预警。
760 0
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
1416 2
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。
五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
文章有点长,请耐心看完,绝对有收获!不想听我BB直接进入面试分享: 准备过程 蚂蚁金服面试分享 拼多多面试分享 字节跳动面试分享 总结
|
计算机视觉 机器学习/深度学习 编解码
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)
1043 0
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)

热门文章

最新文章