当前位置: 首页 > news >正文

虚拟主机怎么弄网站怎样在百度上发布信息

虚拟主机怎么弄网站,怎样在百度上发布信息,网络服务合同纠纷 赔礼道歉,怎样做能让招聘网站记住密码L2-004. 这是二叉搜索树吗? 时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值;其右子树…

L2-004. 这是二叉搜索树吗?

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,

  • 其左子树中所有结点的键值小于该结点的键值;
  • 其右子树中所有结点的键值大于等于该结点的键值;
  • 其左右子树都是二叉搜索树。

所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。

给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。

输入格式:

输入的第一行给出正整数N(<=1000)。随后一行给出N个整数键值,其间以空格分隔。

输出格式:

如果输入序列是对一棵二叉搜索树或其镜像进行前序遍历的结果,则首先在一行中输出“YES”,然后在下一行输出该树后序遍历的结果。数字间有1个空格,一行的首尾不得有多余空格。若答案是否,则输出“NO”。

输入样例1:
7
8 6 5 7 10 8 11
输出样例1:
YES
5 7 6 8 11 10 8
输入样例2:
7
8 10 11 8 6 7 5
输出样例2:
YES
11 8 10 7 5 6 8
输入样例3:
7
8 6 8 5 10 9 11
输出样例3:
NO
思路:我们只需要提炼题意几个关键词,首先是根据二叉搜索树的三个特点建树,
也顺便将其镜像树(原来放左边的放右边)写出来,
然后对比一下其前序遍历是不是对应给出的数列,是就输出其后序遍历的数列。
  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 //二叉搜索树特点:左节点比根节点小,右节点比根节点大 
  4 struct Node{
  5     int data;
  6     struct Node *l;
  7     struct Node *r;
  8 };
  9 int s[1010],v[1010],tmp;
 10 void create1(Node *root,int x){//建树 
 11     Node *p;
 12     if(x<root->data){
 13             if(root->l==NULL){
 14                 p=new Node;
 15                 p->data=x;
 16                 p->l=NULL;
 17                 p->r=NULL;
 18                 root->l=p;
 19                 return ;
 20             }
 21             else 
 22             create1(root->l,x);
 23     }
 24     else{
 25         if(root->r==NULL){
 26             p=new Node;
 27             p->data=x;
 28             p->l=NULL;
 29             p->r=NULL;
 30             root->r=p;
 31             return ;
 32         }
 33         else
 34         create1(root->r,x);
 35     }
 36 }
 37 void create2(Node *root,int x){//镜像树 
 38     Node *p;
 39     if(x>=root->data){
 40             if(root->l==NULL){
 41                 p=new Node;
 42                 p->data=x;
 43                 p->l=NULL;
 44                 p->r=NULL;
 45                 root->l=p;
 46                 return ;
 47             }
 48             else 
 49             create2(root->l,x);
 50     }
 51     else{
 52         if(root->r==NULL){
 53             p=new Node;
 54             p->data=x;
 55             p->l=NULL;
 56             p->r=NULL;
 57             root->r=p;
 58             return ;
 59         }
 60         else
 61         create2(root->r,x);
 62     }
 63 }
 64 void firstvisit(Node *p){//前序遍历:根左右 
 65     if(p!=NULL){
 66         v[tmp++]=p->data;
 67         firstvisit(p->l);
 68         firstvisit(p->r);
 69     }
 70 }
 71 void lastvisit(Node *p){//后序遍历:左右根 
 72     if(p!=NULL){
 73         lastvisit(p->l);
 74         lastvisit(p->r);
 75         v[tmp++]=p->data;
 76     }
 77 }
 78 int main(){
 79     int n,flag;
 80     Node *root,*toor;
 81     root=NULL;
 82     scanf("%d",&n);
 83     for(int i=0;i<n;i++){
 84         scanf("%d",&s[i]);
 85         if(i==0)//根节点 
 86         {
 87             root=new Node;
 88             root->data=s[i];
 89             root->l=NULL;
 90             root->r=NULL;
 91             toor=new Node;
 92             toor->data=s[i];
 93             toor->l=NULL;
 94             toor->r=NULL;
 95         }
 96         else{
 97             create1(root,s[i]);
 98             create2(toor,s[i]);
 99         }
100     }
101     tmp=0;
102     flag=1;
103     firstvisit(root);
104     for(int i=0;i<n;i++){
105         if(s[i]!=v[i]){
106             flag=0;
107             break;
108         }
109     }
110     if(flag==1){
111         printf("YES\n");
112         tmp=0;
113         lastvisit(root);
114         printf("%d",v[0]);
115         for(int i=1;i<n;i++)
116         printf(" %d",v[i]);
117         
118     }
119     else{
120         tmp=0;
121         flag=1;
122         firstvisit(toor);
123         for(int i=0;i<n;i++){
124             if(s[i]!=v[i]){
125                 flag=0;
126                 break;
127             }
128         }
129         if(flag==1){
130             printf("YES\n");
131             tmp=0;
132             lastvisit(toor);
133             printf("%d",v[0]);
134             for(int i=1;i<n;i++)
135             printf(" %d",v[i]);
136         }
137         else
138         printf("NO\n");
139     }
140     return 0;
141 }

 

转载于:https://www.cnblogs.com/zhien-aa/p/5659029.html

http://www.lbrq.cn/news/2666359.html

相关文章:

  • 什么叫域名武汉网站seo推广
  • app制作过程搜索引擎优化行业
  • 有用建站宝盒做网站的吗竞价推广课程
  • 郓城做网站网络公司seo面试常见问题及答案
  • 广告设计公司业务范围搜索引擎优化的主要策略
  • 英文网站的首页怎么做广告开户南京seo
  • 昆明网站建设公司哪家好专业的制作网站开发公司
  • 怎样在网站上做超链接市场营销产品推广策划方案
  • 温州seo网站推广seo公司排行
  • 烟台做网站多钱360推广客服电话是多少
  • 太原中小学网站建设个人推广平台
  • 济南做网站需要多少钱鸡西seo
  • 如何做英文网站外链推广app用什么平台比较好
  • 欢迎访问中国建设银行网上银行网站最新新闻事件今天国内大事
  • phpcms移动端网站怎么做如何查看网站权重
  • 做ppt的兼职网站有哪些网站制作公司排行榜
  • 网站的简介怎么在后台炒做灰色关键词排名收录
  • 怎么做点击图片跳转网站网络营销软件网站
  • 如何给自家网站做关键词优化建立一个国外的网站
  • 赣州网站建设在线超级外链工具
  • 开发区人才市场招聘信息最新招聘郑州企业网站优化排名
  • 网站建设市场多大百度seo优化排名客服电话
  • 网站怎么做才不会被墙近期新闻热点大事件
  • 罗湖网站建好网站制作公司
  • 横沥镇做网站百度首页推荐关不掉吗
  • 做一家网站要多少钱公司推广
  • 做字的网站公司企业网站模板
  • 服务器网站建设维护合同竞价培训课程
  • 网页设计实训体会网站优化排名软件推广
  • 企业网站建设后需要单独服务器关键词seo排名怎么选
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DNS欺骗、DHCP饿死)
  • Linux文件系统基石:透彻理解inode及其核心作用
  • Netbsd安装使用
  • C++11中的移动语义
  • 机器学习 K-Means聚类 无监督学习
  • 第4章 程序段的反复执行for语句P115练习题(题及答案)