爆刷PAT(甲级)——之【1135】 Is It A Red-Black Tree (30 分)——简单模拟

【刷题日记】leetcode1135 最低成本连通所有城市 python leetcode原题描述为: 地图上有 N 座城市,它们按以 1 到 N 的次序编号。 可连接的选项 conections中每个选项 conections[i] = [city1, city2, cost] 表示将城市 city1 和城市 city2 连接所要的成本。(连接是双向的,也就是说城市 city1 和城市 city2 相连也同样意味着城市 city2 和城市 city1 相连)。 返回使... 阅读详情

题意:给一个红黑树的先序BST序列,判断是不是红黑树。

思路:本题没有红黑树的相当理解也OK,因为题目都给你描述清楚了。也没有任何AVL树旋转操作等。直接BST建树、遍历判断即可,应该算一个看名字很难其实考的是模拟的简单细节题。

坑点:1、这是多例输入,所以还要注意回收空间;其中一个小知识是,delete指针以后,系统只是回收了它的空间,但并不会改变指针的值。所以要根节点手动重新赋值为 NULL

2、红黑树中说叶子节点是黑色。这个“叶节点”指的是NULL节点。。。和平时写代码的时候的末尾节点概念不一样。。。所以本题中不用管它,不要没仔细看搞成  root->left==NULL&&root->right==NULL 的节点呀!

3、是个人问题。我的正负号用来判断结点颜色是在建树中的new环节,所以就灭去动它就建树了;而插入过程中选择是左子树还是右子树要去掉正负号来判断!结果未舍去正负号在左右子树选择的时候产生错误,还找了半天。。。所以编码思维和习惯要缜密一些,不然会有很多意想不到的问题。

 

Code:

代码里多了两个DEBUG用的函数,就懒得删了。

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
#define inf 100009
#define INF 0x3f3f3f3f
#define loop(x,y,z) for(x=y;x<z;x++)

int n,flag;
struct Node
{
    int v;
    Node *l,*r;
    bool color;//1红0黑
    Node(int v)
    {
        l=r=NULL;
        color=v<0;
        this->v=color?-v:v;
    }
}*root;

void deleteTree(Node *root)
{
    if(!root)return;
    deleteTree(root->l);
    deleteTree(root->r);
    delete root;
}
void print(Node *root)//DEBUG
{
    if(!root)return;
    printf("father: %d ,sons : %d %d \n",root->v,root->l?root->l->v:-1,root->r?root->r->v:-1);
    print(root->l);
    print(root->r);
}
Node* insert(Node *root,int v)
{
    if(!root)root=new Node(v);
    else
    {
        if(abs(v)<root->v)root->l=insert(root->l,v);
        else root->r=insert(root->r,v);
    }
    return root;
}
int checkColor(Node *root,Node *father)
{
    if(!root)return 0;//NULL节点结束,无黑色
    if(!flag)return -1;//结束剪枝,传递什么无所谓
    if(!father&&root->color)flag=0;//根节点黑色
    if(father&&father->color&&root->color)flag=0;//父红则子黑
    int l=checkColor(root->l,root);
    int r=checkColor(root->r,root);
    if(l!=r)flag=0;
    if(!root->color)l=l+1;//黑色统计
    return l;
}
int main()
{
    int i,j;
    int T;
    cin>>T;
    while(T--)
    {
        deleteTree(root);
        root=NULL;//重新声明
        cin>>n;
        loop(i,0,n)
        {
            cin>>j;
            root=insert(root,j);
            //print(root);printf("\n\n");
        }
        flag=1;
        checkColor(root,NULL);
        if(flag)printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

 

PAT甲级 1135 Is It A Red-Black Tree (30 分) 【红黑树】 There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black. (2) The root is black. (3) Every le... 阅读详情

相关推荐

robomimic实验复现全流程:从数据集下载到训练视频生成

本文详细介绍了机器人模仿学习项目RoboMimic的完整实验复现流程。内容涵盖从使用Conda创建Python 3.8隔离环境、安装RoboSuite仿真器和MuJoCo物理引擎,到下载并探索数据集、配置与启动模型训练,最后进行模型评估和生成策略执行视频。该指南旨在帮助研究者和开发者高效搭建实战环境,规避常见问题,快速验证算法或应用于实际场景。

weixin_29089057的博客 518

1135 Is It A Red-Black Tree (30 分)

There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black. (2) The root is black. (3) Every...

海绵的博客 1271

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 255

PAT 甲级 1132 1133 1134 1135 解题报告 (伪单点测试多了起来)

用时:2小时15分(最后一题花了一个多小时,bug多成山) PAT1132 剪切数 题目大意:给出一个位数为偶数的数字A,把A从中间“劈开“成两个数,请问A能否被这两个数的积整除。 思路:写一个判断位数的函数即可。 做完了发现用string读取的话似乎更好操作些。 另:一开始读错了题,以为从任意位数劈开均可,遍历了一通。费力不讨好。以后一定要读清楚题。 代码: #include <algorithm> #include <vector> #include <iostr

Modberge的博客 615

单细胞轨迹分析实战:基于Monocle和CytoTRACE的细胞分化潜能与状态解析

本文提供了基于Monocle和CytoTRACE的单细胞轨迹分析实战指南。通过乳腺癌数据集,详细演示了从数据准备、伪时序分析、细胞分化潜能评估到分支点功能挖掘的全流程。结合两种工具的优势,能有效解析细胞状态动态演变,为发育和疾病研究提供关键见解。

weixin_29070861的博客 478

STM32通过ESP8266连接机智云APP(第二讲,烧录固件并测试)

今天与大家分享STM32通过ESP8266连接机智云APP,并完成数据的上传下发第二讲。带大家一起烧录机智云固件到ESP8266并且将其通过机智云串口助手与APP进行测试。

qq_63267523的博客 1425

code1135 选择客栈

首先,预处理三个数组。 pre[x]表示在此之前颜色为x的客栈有多少个。 f[x]表示在此之前的客栈中,某个点c,c的颜色为x,并且从c点到已经读入的点之间有费用小于p的客栈,这样的c点的个数 last[x]表示上一个颜色为x的客栈出现在哪 那么接下来的事情就很显然了。 首先读进去一个客栈,如果这个客栈满足费用小于等于p,就把它存下来,为temp(也就是说找到一个最近的费用满足...

dingcao9109的博客 554

S32K3 eMIOS输入捕获(ICU)全解析:从信号测量到代码实现

本文深入解析了S32K3 eMIOS输入捕获(ICU)技术,从信号测量到代码实现的完整流程。详细对比了六种核心捕获模式的性能差异,提供了动态模式切换、Counter Bus配置、中断服务程序优化等实战技巧,并分享了汽车电子中的典型应用案例,如发动机转速测量和CAN唤醒脉冲检测。

weixin_33137081的博客 347

PAT甲级——1135 Is It A Red-Black Tree (30 分)

1135Is It A Red-Black Tree(30分) There is a kind of balanced binary search tree namedred-black treein the data structure. It has the following 5 properties: (1) Every node is either red or black...

小熊猫的博客 817

SAP-ML章<<<<第二节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>>

#SAP-ML章<<<<第一节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>> 1.物料账报错提示: ABAP编程错误:RAISE_EXCEPTION ABAP程序:SAPLFCML4H_RUN_PRICES应用组件CO-PC-ACT 2. 物料账报错背景: CKMLCP运行结算时 3. 解决方案: 通过DEBUG查看错误的地方 OKTZ:分析原因为:可能打包或者配置传输时弄错 ...

SAP.David.Gao的博客 1856

金融行业大数据可视化:实时监控与风险预警系统构建

随着金融业务数字化转型,日均产生的交易数据、市场数据、客户行为数据呈指数级增长(单家银行日交易数据量可达TB级)。数据实时性不足(分钟级延迟难以应对高频交易风险)风险特征挖掘浅层(仅基于规则引擎,漏报率高达30%+)可视化分析能力薄弱(静态报表无法支持动态决策)本文聚焦构建具备毫秒级数据响应智能风险建模交互式可视化决策能力的新一代系统,覆盖数据采集、实时处理、多维可视化、智能预警四大核心模块,适用于银行、证券、保险等金融细分领域。章节核心内容技术亮点核心概念可视化系统架构/数据流模型。

AI天才研究院 1522

1135. Is It A Red-Black Tree (30)-PAT甲级真题

There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black.(2) The root is black.(3) Every lea...

柳婼 の blog 4229

基于 YOLOv26 的光伏板热斑检测系统:红外+可见光

本文提出了一种基于YOLOv26的光伏板热斑检测系统,采用红外+可见光双模态融合方案。系统架构包含数据预处理、热斑检测、故障诊断和维修决策等模块,结合无人机巡检与地面监控。关键技术包括YOLOv26目标检测模型、双模态数据融合、边缘计算部署等。研究构建了包含多种故障类型的光伏板专业数据集,并采用数据增强技术提升模型性能。系统实现了热斑检测、分类(轻微/中等/严重/危急)以及功率损失评估等功能,为光伏电站智能运维提供解决方案。

一键难忘的博客 497

PAT 甲级 1135  Is It A Red-Black Tree

1135 Is It A Red-Black Tree (30 point(s)) There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red o...

漫浸天空的雨色的备忘录~ 879

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

17年春季第四题 PAT甲级 1135 Is It A Red-Black Tree (30)

题目来源:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640 备考汇总贴:2020年3月PAT甲级满分必备刷题技巧 There is a kind of balanced binary search tree namedred-black treein the data structur...

qiiingc的解题记录 988

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

PAT A1135 Is It A Red-Black Tree (30分) (DFS 红黑树的判定)

PAT甲级:1135 Is It A Red-Black Tree (30分) There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or b...

只想用最简短的代码刷题 319

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

PAT甲级A1135 Is It A Red-Black Tree (30 分)

There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black. (2) The root is black. (3) Every...

vir_lee的博客 443

PAT甲级1135 Is It A Red-Black Tree (30 分)

1135Is It A Red-Black Tree(30分) There is a kind of balanced binary search tree namedred-black treein the data structure. It has the following 5 properties: (1) Every node is either red or black...

Dexter 311

PAT甲级1135 Is It A Red-Black Tree (30分):[C++题解]判断红黑树

刷题

阿正的梦工坊 628

PAT-甲级-1135 Is It A Red-Black Tree (30 分)

1135Is It A Red-Black Tree(30分) There is a kind of balanced binary search tree namedred-black treein the data structure. It has the following 5 properties: (1) Every node is either red or black...

valcanoshan的博客 186

【刷题】A1135 Is It A Red-Black Tree-PAT甲级

1135 Is It A Red-Black Tree (30 分) There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black. ...

十三w~w博客 372

【PAT甲级 - C++题解】1135 Is It A Red-Black Tree

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 592

pat 甲级 树 A1135 Is It A Red-Black Tree (30分)红黑树

1135 Is It A Red-Black Tree (30分) There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties: (1) Every node is either red or black. (2) The root is black. (3) Every leaf (NULL) is black

weixin_42358356的博客 321

PAT甲级1135 Is It A Red-Black Tree

There is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties:(1) Every node is either red or black. (2) The root is black. (3) Every le

青铜时代 317

PAT 甲级 1135 Is It A Red-Black Tree (30 分)

思路: 1.根据先根遍历序列和二叉寻找树这两个性质构造一颗二叉树:以所给值的绝对值为key,同时以key值为键用map存储颜色; 2.判断根结点颜色; 3.在构造二叉树时判断,若结点为红色,孩子结点有没有为红色的; 4.遍历二叉树,递归计算以每个结点为根节点的树的所有路径黑色结点个数(注意是每个结点,不只是整棵树的根节点); 代码: #include<iostream> #includ...

Yuhan的博客 208
上一篇: 爆刷PAT(甲级)——之【1101】 Quick Sort (25 分)——简单思维
下一篇: 爆刷PAT(甲级)——之【1139】 First Contact (30 分)——模拟+两个细节
仰天倀笑
博客等级 码龄10年 313粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值