L3-016. 二叉搜索树的结构

团体程序设计天梯赛竞赛题--登顶题【L3-016 二叉搜索树的结构】 登顶级 3 道题,每道题 30 分,满分为 90 分。 阅读详情

L3-016. 二叉搜索树的结构

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

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科)

给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,得到一棵二叉搜索树,则陈述句如“2是树的根”、“1和4是兄弟结点”、“3和0在同一层上”(指自顶向下的深度相同)、“2是4的双亲结点”、“3是4的左孩子”都是正确的;而“4是2的左孩子”、“1和3是兄弟结点”都是不正确的。

输入格式:

输入在第一行给出一个正整数N(<= 100),随后一行给出N个互不相同的整数,数字间以空格分隔,要求将之顺次插入一棵初始为空的二叉搜索树。之后给出一个正整数M(<= 100),随后M行,每行给出一句待判断的陈述句。陈述句有以下6种:

  • "A is the root",即"A是树的根";
  • "A and B are siblings",即"A和B是兄弟结点";
  • "A is the parent of B",即"A是B的双亲结点";
  • "A is the left child of B",即"A是B的左孩子";
  • "A is the right child of B",即"A是B的右孩子";
  • "A and B are on the same level",即"A和B在同一层上"。

题目保证所有给定的整数都在整型范围内。

输出格式:

对每句陈述,如果正确则输出“Yes”,否则输出“No”,每句占一行。

输入样例:
5
2 4 1 3 0
8
2 is the root
1 and 4 are siblings
3 and 0 are on the same level
2 is the parent of 4
3 is the left child of 4
1 is the right child of 2
4 and 0 are on the same level
100 is the right child of 3
输出样例:
Yes
Yes
Yes
Yes
Yes
No
No
No
解析:
思路:先建树,再遍历判断。(这题很简单的,只是操作有点繁琐)
有三点要注意 1,判断是否同双亲,不能用abs(xid-yid)==1判断,上一层的最后一个和本层第一个也满足但是不同双亲;2,查询的点可能不是在0-n-1之内;3查询的A和B可能是同一点(这也是我最后一个数据没过的原因)
#include <stdio.h>
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int n;
int x,y,flag;
vector<int>a(10000,-1);
void build(int num,int index)
{
    if(a[index]==-1)
    {
        a[index]=num;
        return;
    }
    if(num<a[index])
        build(num,2*index);
    else
        build(num,2*index+1);
}
int xid,yid;
void find()
{
    xid=yid=-1;
    for (int i=1; i<10000; i++)
    {
        if(a[i]==x)   //x与y可能是同一点,所以不用if ; else if 组合。
            xid=i;
        if(a[i]==y)
            yid=i;
        if(xid!=-1&&yid!=-1)
            break;
    }

}
void j1()//"A and B are siblings"
{
    find();
    if(xid/2==yid/2)
        flag=1;
}
void j2()//A and B are on the same level
{
    find();
    if((int)log2(xid)==(int)log2(yid))
        flag=1;
}
void j3()//A is the parent of B
{
    find();
    if(yid/2==xid)
        flag=1;
}
void j4(int tmp)
{
    find();
    if(tmp)
    {
        if(2*yid+1==xid)
            flag=1;
    }
    else if(2*yid==xid)
        flag=1;
}
int main ()
{
    scanf("%d",&n);
    for (int i=0; i<n; i++)
    {
        int tmp;
        scanf("%d",&tmp);
        build(tmp,1);
    }
    int m;
    scanf("%d",&m);
    while(m--)
    {
        flag=0;
        string s1,s2;
        cin>>x>>s1;
        if(s1=="and")
        {
            cin>>y>>s1>>s2;
            if(s2[0]=='s')
            {
                j1();
            }
            else
            {
                cin>>s1>>s1>>s1;
                j2();
            }

        }
        else
        {
            cin>>s1>>s2;
            if(s2[0]=='r')
            {
                if(s2[1]=='i')
                {
                    cin>>s1>>s2>>y;
                    j4(1);
                }
                else if(x==a[1])
                    flag=1;
            }
            else if(s2[0]=='p')
            {
                cin>>s1>>y;
                j3();
            }
            else if(s2[0]=='l')
            {
                cin>>s1>>s2>>y;
                j4(0);
            }
        }
        if(xid==-1||yid==-1)//可能不是0-n-1上的点。所以find()之后xid,与yid的值可能不改变。
            flag=0;
        if(flag)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}



紫光同创PGL50H开发板实战:盘古50KH视频板的多媒体处理与高速通信方案 本文详细介绍了基于紫光同创PGL50H FPGA芯片的盘古50KH视频开发板在多媒体处理与高速通信方面的实战应用。文章从开发板硬件架构解析入手,逐步指导开发环境搭建、DDR3内存控制器配置、HDMI视频输入输出实战,并重点探讨了利用板载HSST高速收发器实现光纤通信与万兆以太网的方案。最后,通过构建一个集多路视频采集、处理与光纤传输于一体的系统案例,展示了该开发板在高性能实时数据处理领域的强大潜力。 阅读详情

相关推荐

PYTHON 打印三角形大全

用PYTHON语言打印各种三角形

世上无难事,只要肯攀登 1万+

L3-016 二叉搜索树的结构

题目链接 思路: 插入法建二叉树搜索树,用一个map记录每个值在tree中的索引,几个判断借助其值在tree中索引即可。 只有一个判断是否在一层上要多写点: 先找出输入第一个点所在的二叉树层数,在用改层的tree索引值范围判断第二个数是否在该层。 代码: #include <bits/stdc++.h> #define fastio ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL) #define debug(a) cout &

Belief_7 187

具身智能落地实战:制造业、物流与电力的工业级方案设计

具身智能是一种融合感知、推理与物理执行的智能范式,其核心在于构建具备因果建模能力、多模态闭环反馈和实时动作规划的行动主体。区别于通用AI或传统自动化,它依托多模态大模型、高精度力觉/触觉传感及Sim2Real仿真技术,实现对真实物理环境的深度理解与自适应交互。技术价值体现在可解释性决策、毫秒级跨模态协同与零停机容错能力,已规模化应用于制造业质检、物流破损鉴定、电力绝缘子巡检等强约束工业场景。本文聚焦‘行业应用方案解决方案’这一高频搜索需求,系统拆解从工位筛选、分层架构设计到72小时现场交付的全链路工程方法论

weixin_30952479的博客 300

团体程序设计天梯赛-练习集 -- L3-016. 二叉搜索树的结构(模拟)

题意: 建立搜索二叉树,然后就是一系列询问了。 有几个坑: 要查询的数值可能不在二叉树上。 数值不是1~n的。需要以下标建立二叉树或者 离散化一下。 可能是时间紧迫问题,  差了四分 就是没想到 数值可能不在二叉树上了。 #include #include #include #include #include #include using namespace std

aozil_yang的博客 1082

新手必看:手把手教你如何通过Github提交CVE漏洞(附完整截图流程)

本文为安全研究新手提供了一份详尽的CVE漏洞提交实战指南。文章重点介绍了如何通过Github平台,从漏洞发现、验证、撰写专业报告到最终提交CVE申请的全流程,并附有完整的截图和沟通模板,帮助初学者迈出负责任漏洞披露的第一步。

ttt77的博客 1253

实战MSP-M0G3507与陶晶驰串口屏的通信协议解析

本文详细解析了MSP-M0G3507微控制器与陶晶驰串口屏的通信协议实现。内容涵盖串口配置、协议帧结构、数据校验机制及ASCII协议实战代码,重点介绍了陶晶驰串口屏的指令集应用和调试技巧,为嵌入式开发提供可靠的串口通信解决方案。

h9j8k7l6m5n的博客 867

(L3-016)二叉搜索树的结构(建树+离散化)

题目链接:PTA | 程序设计类实验辅助教学平台 输入样例: 5 2 4 1 3 0 8 2 is the root 1 and 4 are siblings 3 and 0 are on the same level 2 is the parent of 4 3 is the left child of 4 1 is the right child of 2 4 and 0 are on the same level 100 is the right child of 3 输出样例: Y

AC__dream的博客 445

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f结构,实现精度与效率的同步提升

打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。

know_F0727的博客 203

pat-L3-016. 二叉搜索树的结构

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科)给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,得到...

暴走的二哈 1094

STC单片机使用FatFs文件系统读取SD卡指定文件内容

STC单片机使用FatFs文件系统读取SD卡指定文件内容

perseverance51博客 2745

基于SC、SCL、BP、SCAN和SSC的译码算法及Matlab代码

本文将介绍几种常见的译码算法,包括SC(Successive Cancellation)、SCL(Successive Cancellation List)、BP(Belief Propagation)、SCAN(Soft-Input Soft-Output Successive Cancellation)、SSC(Stacked Successive Cancellation)的原理,并提供相应的Matlab代码实现。以上是基于SC、SCL、BP、SCAN和SSC的译码算法的Matlab代码示例。

ByteWhisper的博客 946

L3-016 二叉搜索树的结构 (30 分)(三种代码)

L3-016 二叉搜索树的结构 (30 分) 目录 L3-016 二叉搜索树的结构 (30 分) 代码1(段错误 数组开小了..开大一点能过) 代码2(dfs) 代码3 (AC) 【分析】 一开始建树做,想把它转换成完全二叉树,但是N=100的话,肯定数组是存不下的,所以导致最后一个测试点过不了段错误,只有27分.. 数组开大点就可以了...数据比较水 代码1(段错误 数...

来啦(#^.^#) 1672

新政下的绿电直连项目经济性分析:模式创新与价值重构

随着全球气候治理与低碳转型进程不断加速,绿电直连作为新能源就近消纳的创新模式,正成为破解新能源消纳瓶颈、规避碳关税壁垒的核心路径。2025年9月,国家发展改革委、国家能源局发布《关于完善价格机制促进新能源发电就近消纳的通知》(1192号文),为绿电直连项目的经济性分析与效益测算提供了明确的政策依据。本文将基于新政框架,深入解析绿电直连项目的经济性影响因素、盈利模式与优化路径,并结合案例与量化模型,为项目投资决策提供系统参考。

getusushu的博客 140

PAT L3-016 二叉搜索树的结构

https://pintia.cn/problem-sets/994805046380707840/problems/994805047903240192 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科...

weixin_30268071的博客 112

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CCCC-L3-016. 二叉搜索树的结构

CCCC-L3-016. 二叉搜索树的结构 题目 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科) 给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是...

rainbowsea_1的博客 215

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

L3-016 二叉搜索树的结构 (30 分)

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科) 给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,...

cherish_lin的博客 1071

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

L3-016 二叉搜索树的结构 (30分)

L3-016 二叉搜索树的结构 (30分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科) 给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,得到一棵二叉搜索树,则陈述句如“2是树的根”、“1和4是兄弟结点”、“

濡苏的博客 869

天梯赛L3-016 二叉搜索树的结构 c++

例如将{ 2 4 1 3 0 }插入后,得到一棵二叉搜索树,则陈述句如“2是树的根”、“1和4是兄弟结点”、“3和0在同一层上”(指自顶向下的深度相同)、“2是4的双亲结点”、“3是4的左孩子”都是正确的;二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;它的左、右子树也分别为二叉搜索树。输入在第一行给出一个正整数N(≤100),随后一行给出N个互不相同的整数,数字间以空格分隔,要求将之顺次插入一棵初始为空的二叉搜索树。

yaoye222的博客 710

【天梯赛L3-016】二叉搜索树的结构 (建树)

题目链接 L3-016二叉搜索树的结构(30分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科) 给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断...

よろしくお願いします 638
上一篇: L2-017. 人以群分
下一篇: 蚂蚁感冒(蓝桥杯--思维好题)
也道长
博客等级 码龄9年 11粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值