http://pat.zju.edu.cn/contests/pat-a-practise/1043

给予N个数字组成二叉搜索树,判断这个数列是否由先序遍历得出或是镜像先序遍历得出,若是则输出相应的后续遍历或是镜像后续遍历

分析:

镜像先序遍历其实就是 先访问祖先,再访问右子树,再左子树

镜像后续遍历就是先访问右子树,再左子树,在祖先

#include<stdio.h>

struct tree{
int v;
tree *left,*right;
}; int shu[];
int pre[];
int post[];
int step; void bulid(tree* head,int v){
if(v >= head->v){
if(head->right==NULL){
head->right=new tree;
head=head->right;
head->v=v;
head->left=NULL;
head->right=NULL;
}else{
bulid(head->right,v);
}
}else{
if(head->left==NULL){
head->left=new tree;
head=head->left;
head->v=v;
head->left=NULL;
head->right=NULL;
}else{
bulid(head->left,v);
}
}
} void preTree(tree* head,int mirror){
pre[step]=head->v;
step++;
if(mirror==){
if(head->left!=NULL)preTree(head->left,mirror);
if(head->right!=NULL)preTree(head->right,mirror);
}else{
if(head->right!=NULL)preTree(head->right,mirror);
if(head->left!=NULL)preTree(head->left,mirror);
}
} void postTree(tree* head,int mirror){
if(mirror==){
if(head->left!=NULL)postTree(head->left,mirror);
if(head->right!=NULL)postTree(head->right,mirror);
}else{
if(head->right!=NULL)postTree(head->right,mirror);
if(head->left!=NULL)postTree(head->left,mirror);
}
post[step]=head->v;
step++;
} int main(){
int n;
while(scanf("%d",&n)!=EOF){
int i,mirror=-; tree* rhead;
tree* head=new tree;
rhead=head; for(i=;i<=n;i++){
scanf("%d",&shu[i]);
}
if(n==){
printf("YES\n");
printf("%d\n",shu[]);
continue;
} head->v=shu[];
head->left=NULL;
head->right=NULL;
for(i=;i<=n;i++){
bulid(rhead,shu[i]);
} step=;
preTree(rhead,);//普通的先序遍历
for(i=;i<=n;i++){
if(shu[i]!=pre[i])break;
}
if(i==n+)mirror=; step=;
preTree(rhead,);//镜像先序遍历
for(i=;i<=n;i++){
if(shu[i]!=pre[i])break;
}
if(i==n+)mirror=; if(mirror==-){
printf("NO\n");
continue;
} printf("YES\n");
step=;
postTree(rhead,mirror);
int ok=;
for(i=;i<=n;i++){
if(ok==)ok=;
else printf(" ");
printf("%d",post[i]);
}
printf("\n");
} return ;
}

树的遍历——pat1043的更多相关文章

  1. 数据结构--树(遍历,红黑,B树)

    平时接触树还比较少,写一篇博文来积累一下树的相关知识. 很早之前在数据结构里面学的树的遍历. 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍 ...

  2. YTU 3023: 树的遍历

    原文链接:https://www.dreamwings.cn/ytu3023/2617.html 3023: 树的遍历 时间限制: 1 Sec  内存限制: 128 MB 提交: 3  解决: 2 题 ...

  3. 团体程序设计天梯赛-练习集L2-006. 树的遍历

    L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...

  4. leetcode404-----简单的树的遍历

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

  5. pat L2-006. 树的遍历

    L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...

  6. L2-006. 树的遍历

    题目链接:L2-006. 树的遍历 今天一神给我手敲二叉树模板,瞬间就领悟了,感觉自己萌萌哒! 看上去很直观! #include <iostream> #include <cstdi ...

  7. js实现对树深度优先遍历与广度优先遍历

    深度优先与广度优先的定义 首先我们先要知道什么是深度优先什么是广度优先. 深度优先遍历是指从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续 ...

  8. L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...

  9. 团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树

    L2-006. 树的遍历 #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...

随机推荐

  1. percona innobackupex 遇到 connect to MySQL server as DBD::mysql module is not installed 问题

    percona innobackupex connect to MySQL server as DBD::mysql module is not installed [root@mysql softw ...

  2. Web字体(链接)嵌入

    下面是我最近在学习的两种字体嵌入方法 1.@font-face 使用@font-face可以这样做: @font-face{ font-family:"Garamod Premier Pro ...

  3. VS展开当前目录

  4. navicat for mysql 导入SQL Server显示中文乱码解决办法

    解决方法是在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用mysql字符集”前的对勾,在编码里选择utf-8

  5. Spark安装和简单示例

    spark的安装 先到官网下载安装包 注意第二项要选择和自己hadoop版本相匹配的spark版本,然后在第4项点击下载.若无图形界面,可用windows系统下载完成后传送到centos中. 本例中安 ...

  6. 使用VisualStudio读写NI FPGA板卡实例(基于FPGA Interface C API Generator)

    实验平台说明:安装了NI LabVIEW 2015 32bit版本,安装了NI FPGA Interface C API Generator,安装了硬件PCIe-7842R:安装了Visual Stu ...

  7. Django中构造响应对象的方式

    1 HttpResponse 可以使用django.http.HttpResponse来构造响应对象. HttpResponse(content=响应体, content_type=响应体数据类型, ...

  8. FCT test device

  9. JDK1.7之 HashMap 源码分析

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/75451812 类继承关系 构造函数 Entry put put putForNullK ...

  10. 基于Vue的后台选择推荐

    引言: Vue.js目前是业界大名鼎鼎的Web解决方案,具体有点,我这里就不再赘述了,感兴趣的童鞋自行查找阅读,这里罗列一下,这几天自己研究的成果,管理后台. 管理后台 Vue Element Adm ...