题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192

题意:给定n以及n个整数,问该序列是否为二叉搜索树的前序遍历或者二叉搜索树镜像的前序遍历,若是,则输出YES,并输出其后序遍历,否则输出NO。

思路:先判断是否为二叉搜索树的前序遍历,令is=false,通过递归和二叉搜索树的性质计算其后序遍历序列,若序列长度等于n,即成立,否则令is=true,再次计算其后序遍历序列,若序列长度为n即成立,否则输出“NO”。

AC代码:

 #include<bits/stdc++.h>
using namespace std; int n;
vector<int> pre,post;
bool is; void getpost(int l,int r){
int i=l+,j=r;
if(l>r) return;
if(!is){
while(i<=r&&pre[i]<pre[l]) ++i;
while(j>l&&pre[j]>=pre[l]) --j;
}
else{
while(i<=r&&pre[i]>=pre[l]) ++i;
while(j>l&&pre[j]<pre[l]) --j;
}
if(i-j!=) return;
getpost(l+,j);
getpost(i,r);
post.push_back(pre[l]);
} int main(){
scanf("%d",&n);
pre.resize(n);
for(int i=;i<n;++i)
scanf("%d",&pre[i]);
getpost(,n-);
if(post.size()!=n){
is=true;
post.clear();
getpost(,n-);
}
if(post.size()==n){
printf("YES\n%d",post[]);
for(int i=;i<n;++i)
printf(" %d",post[i]);
printf("\n");
}
else
printf("NO\n");
return ;
}

pta l2-4(这是二叉搜索树吗?)的更多相关文章

  1. PTA 04-树4 是否同一棵二叉搜索树 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/712 5-4 是否同一棵二叉搜索树   (25分) 给定一个插入序列就可以唯一确定一棵二 ...

  2. [刷题] PTA 04-树4 是否同一棵二叉搜索树

    程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct TreeNode *Tree; 4 struct ...

  3. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历   二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则 ...

  4. PTA 7-1 是否完全二叉搜索树 (30分)

    PTA 7-1 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. ...

  5. PTA二叉搜索树的操作集 (30分)

    PTA二叉搜索树的操作集 (30分) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTr ...

  6. PTA 是否二叉搜索树 (25分)

    PTA 是否二叉搜索树 (25分) 本题要求实现函数,判断给定二叉树是否二叉搜索树. 函数接口定义: bool IsBST ( BinTree T ); 其中BinTree结构定义如下: typede ...

  7. PTA 7-2 是否完全二叉搜索树(30 分) 二叉树

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

  8. PTA 7-2 二叉搜索树的结构(30 分)

    7-2 二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大 ...

  9. PTA L2-004 这是二叉搜索树吗?-判断是否是对一棵二叉搜索树或其镜像进行前序遍历的结果 团体程序设计天梯赛-练习集

    L2-004 这是二叉搜索树吗? (25 分)   一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结 ...

随机推荐

  1. docker资料转载

    Docker之理解image,container和storage-driver centos7创建docker tomcat镜像 Linux Namespace和Cgroup

  2. php实现SSO单点登录实例

    1.点击登录跳转到SSO登录页面并带上当前应用的callback地址2.登录成功后生成COOKIE并将COOKIE传给callback地址3.callback地址接收SSO的COOKIE并设置在当前域 ...

  3. js对象引用和赋值

    体验更优排版请移步原文:http://blog.kwin.wang/programming/js-object-reference-assign.html 先看一个简单例子, var obj = { ...

  4. BBS-基于用户认证组建和Ajax实现登陆验证

    功能1: 基于用户认证组件和Ajax实现登录验证(图片验证码) 总结: 1 一次请求伴随多次请求 2 PIL 3 session存储 4 验证码刷新 步骤: 1.配置静态文件夹 settings.py ...

  5. APP-8-文本语音

    1.百度语音合成JS文件 baidu_tts_cors.js /** * 浏览器调用语音合成接口 * @param {Object} param 百度语音合成接口参数 * 请参考 https://ai ...

  6. sourcetree 跳过注册

    https://www.cnblogs.com/lucio110/p/8192792.html

  7. 尚硅谷redis学习4-数据类型

    redis的数据类型包括String,Hash(类似于JAVA里的map),List,Set,Zset(sorted Set) String(字符串) string是redis最基本的类型,你可以理解 ...

  8. Haskell语言学习笔记(76)Data.Tree

    Data.Tree data Tree a = Node { rootLabel :: a, subForest :: Forest a } deriving (Eq, Read, Show) typ ...

  9. 转: HTML5之placeholder属性以及如何更改placeholder属性中文字颜色

    今天在群里看到群友问了一个这样的问题,就是如何更改placeholder属性中文字的颜色,以前用过这属性,却是没更改过颜色,于是便试了试,中途遇到些问题,查找资料后特来总结一下. 熟悉HTML5的人应 ...

  10. Android代码规范

    Android代码规范——文章来源<IT蓝豹>http://itlanbao.com/preview.aspx#1,0 [-]一Import的次序二缩进Indentation总则示例代码规 ...