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

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化 本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。 阅读详情

题目来源:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640

备考汇总贴:2020年3月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 leaf (NULL) is black.
  • (4) If a node is red, then both its children are black.
  • (5) For each node, all simple paths from the node to descendant leaves contain the same number of black nodes.

For example, the tree in Figure 1 is a red-black tree, while the ones in Figure 2 and 3 are not.

rbf1.jpgrbf2.jpgrbf3.jpg
Figure 1Figure 2Figure 3

For each given binary search tree, you are supposed to tell if it is a legal red-black tree.

Input Specification:

Each input file contains several test cases. The first line gives a positive integer K (≤30) which is the total number of cases. For each case, the first line gives a positive integer N (≤30), the total number of nodes in the binary tree. The second line gives the preorder traversal sequence of the tree. While all the keys in a tree are positive integers, we use negative signs to represent red nodes. All the numbers in a line are separated by a space. The sample input cases correspond to the trees shown in Figure 1, 2 and 3.

Output Specification:

For each test case, print in a line "Yes" if the given tree is a red-black tree, or "No" if not.

Sample Input:

3
9
7 -2 1 5 -4 -11 8 14 -15
9
11 -2 1 -7 5 -4 8 14 -15
8
10 -7 5 -6 8 15 -11 17

Sample Output:

Yes
No
No

题目大意(以下内容主要转载自liuchuo,经过了我的编辑补充)

给一棵二叉搜索树的前序遍历,判断它是否为红黑树,是输出Yes,否则输出No。

题目分析

一、这道题必须按照题目给的红黑树五个定义去思考:
(1) Every node is either red or black. (不用判断)
(2) The root is black.(需要判断)
(3) Every leaf (NULL) is black.(不用判断,但是可以用在4的判断里)
(4) If a node is red, then both its children are black.(需要判断)
(5) For each node, all simple paths from the node to descendant leaves contain the same number of black nodes.(需要判断)

题目还提到红黑树是一种二叉搜索树(所以中序唯一确定),那给定前序就能确定一棵树了。

题目还说红黑树是“balanced”(平衡的),不用管。

二、整理一下,整个程序要做的是判断以下几点:
1.根结点是否为黑色
2.如果一个结点是红色,它的孩子节点是否都为黑色
3.从任意结点到叶子结点的路径中,黑色结点的个数是否相同
所以分为以下几步:
0. 根据先序建立一棵树,用链表表示(常规的BST的建树方法)
1. 判断根结点(题目所给先序的第一个点即根结点)是否是黑色
2. 根据建立的树,从根结点开始遍历,如果当前结点是红色,判断它的孩子节点是否为黑色,递归返回结果
3. 从根节点开始,递归遍历,检查每个结点的左子树的高度和右子树的高度(这里的高度指黑色结点的个数),比较左右孩子高度是否相等,递归返回结果
 

满分代码

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<int> arr;
struct node {
    int val;
    struct node *left, *right;
};
//建树
node* build(node *root, int v) {
    if(root == NULL) {
        root = new node();
        root->val = v;
        root->left = root->right = NULL;
    } else if(abs(v) <= abs(root->val))
        root->left = build(root->left, v);
    else
        root->right = build(root->right, v);
    return root;
}
//从根结点开始遍历,如果当前结点是红色,判断它的孩子节点是否为黑色,递归返回结果
bool judge1(node *root) {
    if (root == NULL) return true;
    if (root->val < 0) {
        if (root->left != NULL && root->left->val < 0) return false;
        if (root->right != NULL && root->right->val < 0) return false;
    }
    return judge1(root->left) && judge1(root->right);
}
//求出节点的高度(这里的高度指黑色结点的个数)
int getNum(node *root) {
    if (root == NULL) return 0;
    int l = getNum(root->left);
    int r = getNum(root->right);
    return root->val > 0 ? max(l, r) + 1 : max(l, r);
}
//检查每个结点的左子树的高度和右子树的高度(这里的高度指黑色结点的个数),比较左右孩子高度是否相等,递归返回结果
bool judge2(node *root) {
    if (root == NULL) return true;
    int l = getNum(root->left);
    int r = getNum(root->right);
    if(l != r) return false;
    return judge2(root->left) && judge2(root->right);
}
int main() {
    int k, n;
    scanf("%d", &k);
    for (int i = 0; i < k; i++) {
        scanf("%d", &n);
        arr.resize(n);
        node *root = NULL;
        for (int j = 0; j < n; j++) {
            scanf("%d", &arr[j]);
            root = build(root, arr[j]);
        }
        if (arr[0] < 0 || judge1(root) == false || judge2(root) == false)
            printf("No\n");
        else
            printf("Yes\n");
    }
    return 0;
}

 

 

 

 

扫码器USB键盘报告描述符数据格式解析 Byte0用于判断Shift是否按下,当按下时Byte0的Bit1会置1,即0x02,若未按下,Bit为0,即0x00。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>未按下Shift。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>按下Shift。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出A。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出a。 阅读详情

相关推荐

从3D相机数据到三维模型:Halcon实战深度图、亮度图与点云转换全流程

本文详细解析了如何利用Halcon将3D相机采集的深度图、亮度图转换为三维点云模型的完整流程。通过实战案例分享,涵盖数据格式处理、点云生成方法(SDK接口与纯Halcon实现)、三维模型可视化优化等关键技术,帮助工程师解决工业检测中的实际难题,提升三维重建精度与效率。

weixin_42525005的博客 396

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 ...

weixin_37421387的博客 290

简化神经元模型6 -- Hindmarsh-Rose Model

简化神经元模型 6 Hindmarsh-Rose Model

weixin_73557167的博客 1427

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...

ysq96的博客 1537

达梦--利用存储过程与定时任务实现数据自动迁移

本文详细介绍了在达梦数据库中如何结合存储过程与定时任务实现数据自动迁移。通过一个电商订单归档的实战案例,阐述了从设计表结构、编写具备异常处理和幂等性的存储过程,到配置DBMS_SCHEDULER定时任务的全流程。该方法能有效替代手动脚本,确保数据同步任务的稳定、准确与自动化执行,适用于报表准备、数据备份等多种场景。

weixin_29261711的博客 430

AI智能体安全沙箱agentguard:为LLM代码执行筑起防火墙

在AI应用开发领域,大语言模型(LLM)驱动的智能体(Agent)能够自动生成并执行代码,极大地提升了自动化能力。然而,赋予AI直接执行系统命令的权限也带来了显著的安全风险,如恶意代码注入、敏感数据泄露和系统资源滥用。为了解决这一核心矛盾,安全沙箱技术应运而生,它通过在不可信代码与宿主系统之间建立隔离层,实现"默认拒绝、最小权限"的安全原则。agentguard项目正是这一理念的工程实践,它结合白名单机制与容器化隔离,为AI智能体提供了可配置、可审计的安全执行环境。该方案不仅适用于内部自动化工具开发,也为构

weixin_28695537的博客 296

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

https://www.patest.cn/contests/pat-a-practise/1135 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

akibayashi的博客 2569

S32DS使用手把手教程:从零实现CAN通信配置

深入讲解S32DS使用过程中如何从零开始配置CAN通信,涵盖关键步骤与实用技巧,帮助开发者快速上手S32DS使用中的常见问题与调试方法。

weixin_42405592的博客 1126

重温数据结构:深入理解红黑树

读完本文你将了解到: 什么是红黑树黑色高度 红黑树的 5 个特性 红黑树的左旋右旋 指定节点 x 的左旋 右图转成左图 指定节点 y 的右旋左图转成右图 红黑树的平衡插入 二叉查找树的插入 插入后调整红黑树结构 调整思想 插入染红后的调整有 2 种情况 根据 TreeMap 的代码来验证这个过程 红黑树的平衡删除 二叉查找树的删除 删除后的结构调整 调整思想 删除后的调整主要分三步 根据 TreeM

张拭心的博客 shixinzhang 3万+

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 670

EPLAN 电气制图(六):电机正反转副勾主电路绘制

【插入】→【设备】→选择 “SIE.3RV2011-1AA15”(Q1)和 “SIE.1TL0001-1DB3”(M1),放置于图纸左侧。生成端子排 X3:【端子排导航器】→新建编号 “1-20”,部件 “PXC.3211814”,放置于电机上方,功能文本标注 “电机端子”。属性设置:双击结构盒,在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),并在 “格式” 选项卡中调整线型与颜色。实用技巧:勾选【选项】→【设置】→【图形的编辑】中的 “绘制带有空白区域的结构盒”,可使元件布局更清晰。

电工 2030

红黑树

基于https://www.cs.auckland.ac.nz/~jmor159/PLDS210/red_black.html整理   红黑树是个二叉搜索树,结点非黑即红 Red-black trees Trees which remain balanced - and thus guarantee O(logn) search times - in a dynamic environmen

u013571243的专栏 549

SD卡烧写Linux kernel——SD卡分区,并烧写uboot,kernel,DTB及filesystem

Linux Ubuntu环境下对SD卡分区(烧写uboot,kernel,及filesystem) 介绍dd命令的使用,SD卡分区、格式化、复制文件等 fdisk命令

weixin_42408707的博客 5056

PAT 1135 Is It A Red-Black Tree

原题链接:1135 Is It A Red-Black Tree (30分) 关键字:红黑树、BST树建树 题目大意: 给出一棵二叉搜索树的前序遍历,请你判断它是否是红黑树。

cwtnice的博客 138

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

【PAT 1135. Is It A Red-Black Tree (30)】& 二叉树

Is It A Red-Black Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue There is a kind of balanced binary search tree named red-black tree in the data structure. It h

楚江枫 3139

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

问题描述:给定一颗树的先序,判断是否为红黑树。 解题思路:满足BST,直接插入建树,判断需每个节点都判断,按理来说,只判断根节点到所有叶节点的黑节点个数是否相等即可呀??????? AC代码: #include&lt;iostream&gt; #include&lt;unordered_map&gt; #include&lt;algorithm&gt; #include&lt;cmath&...

lianwaiyuwusheng的博客 582

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

A1135 Is It A Red-Black Tree (30 分| 红黑树,附详细注释,逻辑分析)

写在前面 思路分析 给一棵二叉搜索树的前序遍历,判断它是否为红黑树,是输出Yes,否则输出No。 红黑树Red-Black Tree特点 1.根结点是否为黑色 判断根结点(题目所给先序的第1个点即根结点)是否是黑色【arr[0] < 0】 2.将NULL看成1个叶子节点,为黑black色 3.如果1个结点是红色,它的孩子节点是否都为黑色 根据建立的树,从根结点开始遍历,如果当前...

kngines 1474

Is It A Red-Black Tree?(判断一棵树是否为红黑二叉树)

以前没接触过这种树,看了别人的代码,加上了详细的注释。 思路全在注释中。 简单把红黑树的五条性质翻译下: 1.每个节点只有两种颜色:非红即黑; 2.根节点是黑色; 3.叶子节点(NULL)是黑色的(对于每个叶子节点来说,他的左右孩子(NULL)都是黑的) 4.若节点为红色,他的所有孩子都是黑色; 5.对于每个节点,从这个节点到每个叶子节点的黑色节点的个数都相同。 ...

weixin_30624825的博客 487

pat1135 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

人生如梦,浮华一瞬间的专栏 1305

PAT甲级1135----红黑树题解

题目描述 Is It A Red-Black Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue There is a kind of balanced binary search tree named red-black

MarsMine的博客 3869

PAT(A) 1135. Is It A Red-Black Tree (30)

原题目: 原题链接:https://www.patest.cn/contests/pat-a-practise/1135 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...

萧易桥的博客 768

浙大 PAT 1043. Is It a Binary Search Tree (25)

1043. Is It a Binary Search Tree (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Binary Search Tree (BST) is r

凌风 5207

浅析JAVA集合框架之HashMap

数据结构

秀强的专栏 1672

12/2

题型. 1.红黑树2.模拟大数3.前序中序推后序4.模拟题。 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) Eve...

没有期待的日子反而会顺顺利利 233

201909浙大计院软院保研机试题目

PAT考试(patest.cn)甲级的难度和形式,一共600人左右,软院300左右,计院300+,软院28个满分,计院60+个满分。三小时的考试,我是两小时左右拿到了满分,第一个满分的同学只用了60min(考试过程中随时可以看排行榜)。

l503301397的博客 1465
上一篇: 17年秋季第三题 PAT甲级 1138 Postorder Traversal (25分)
下一篇: 18年冬季第三题 PAT甲级 1154 Vertex Coloring (25分) 两种思路
浒鱼鱼
博客等级 码龄11年 287粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值