树的遍历——pat1043
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的更多相关文章
- 数据结构--树(遍历,红黑,B树)
平时接触树还比较少,写一篇博文来积累一下树的相关知识. 很早之前在数据结构里面学的树的遍历. 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍 ...
- YTU 3023: 树的遍历
原文链接:https://www.dreamwings.cn/ytu3023/2617.html 3023: 树的遍历 时间限制: 1 Sec 内存限制: 128 MB 提交: 3 解决: 2 题 ...
- 团体程序设计天梯赛-练习集L2-006. 树的遍历
L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...
- leetcode404-----简单的树的遍历
Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...
- pat L2-006. 树的遍历
L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...
- L2-006. 树的遍历
题目链接:L2-006. 树的遍历 今天一神给我手敲二叉树模板,瞬间就领悟了,感觉自己萌萌哒! 看上去很直观! #include <iostream> #include <cstdi ...
- js实现对树深度优先遍历与广度优先遍历
深度优先与广度优先的定义 首先我们先要知道什么是深度优先什么是广度优先. 深度优先遍历是指从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续 ...
- L2-006 树的遍历 (25 分) (根据后序遍历与中序遍历建二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 L2-006 树的遍历 (25 分 ...
- 团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树
L2-006. 树的遍历 #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...
随机推荐
- php7.2版本+yii2会报错
FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot use 'Object' as class name as it ...
- Windows 下配置Git
在Windows上安装git很长时间了,一直都没有配置,就是简单的使用.当然配置后就可以在任意目录下使用git命令.其实就是配置下git的环境变量. 首先,当然下载windows版本:点我下载 安装直 ...
- urllib2.HTTPError: HTTP Error 403: Forbidden
这个问题主要是没有headers,加入一些内容就可以了 示例: # -*- coding: UTF-8 -*- import urllib2 site= "http://www.nseind ...
- Hugepages,hugetlb_shm_group与ORA-27125
Hugepages,hugetlb_shm_group与ORA-27125 转载:http://www.eygle.com/archives/2011/12/hugepageshugetl.html ...
- MySQL pt-table-checksum及pt-table-sync校验及修复主从一致性
[pt-table-checksum]pt-table-checksum是percona-toolkit系列工具中的一个, 可以用来检测主. 从数据库中数据的一致性.其原理是在主库上运行, 对同步的表 ...
- session、cookie、viewstate
session的用法 定义:保存在服务器内存的数据,sesson 只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上,session在默认情况下20分钟就过期,在页面之中最好不要过多使用,因 ...
- 【后台测试】postman简介
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6266047.html 在接口测试的过程中,经常拿到一个接口 ...
- 【WebGL】2.基础概念
引入Three.js <!DOCTYPE html> <html> <head> <title></title> </head> ...
- Spring报错:java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
感谢:http://blog.chinaunix.net/uid-20681545-id-184633.html提供的解决方案,非常棒 ! 问题说明: 新建一个Spring项目,新建一个Bean类:H ...
- Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
一.问题背景 产生环境:oracle数据库,hibernate操作 定义了一个表 create table STORE_INFORMATION ( id CHAR(32) not null, name ...