news 2026/6/23 19:46:13

PAT 1135 Is It A Red-Black Tree

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PAT 1135 Is It A Red-Black Tree



这一题的大意是给出一个二叉搜索树,让我们判断是不是红黑树,
只需要按题目要求构造好树,然后判断它是不是符合红黑树的条件即可。
题目给出了红黑树的性质,我们只需要判断它是否满足即可。
需要我们对二叉搜索树,建树,DFS掌握好
完整代码如下:

#include<bits/stdc++.h>#include<iostream>usingnamespacestd;//构造一棵二叉搜索树structnode{intdata;structnode*l;structnode*r;intcolor;};node*tostruct_tree(node*root,intx){if(root==nullptr){root=new(node);root->data=x;if(x>0){root->color=1;//表示黑色}else{root->color=0;//表示红色}root->l=nullptr;root->r=nullptr;}elseif(abs(x)<abs(root->data)){root->l=tostruct_tree(root->l,x);}elseif(abs(x)>abs(root->data)){root->r=tostruct_tree(root->r,x);}returnroot;}intgetBlackHeight(node*x){if(x==nullptr)return1;// NULL节点视为黑色(属性3)// 递归获取左右子树黑高intleft=getBlackHeight(x->l);intright=getBlackHeight(x->r);if(left==-1||right==-1)return-1;// 下层已经发现不合法,继续上传if(left!=right)return-1;// 属性5不满足,黑高不一致// 若当前是黑节点,黑高 +1returnleft+(x->color==1?1:0);}boolisredtree(node*root,boolflag){if(flag==0){if(root->color==0){returnfalse;}flag=1;}if(root!=nullptr&&root->color==0){//红色if(root->l!=nullptr&&root->l->color==0){returnfalse;}if(root->r!=nullptr&&root->r->color==0){returnfalse;}}if(getBlackHeight(root)==-1)returnfalse;if(root->l!=nullptr){if(!isredtree(root->l,1)){// cout<<"1"<<endl;returnfalse;}}if(root->r!=nullptr){if(!isredtree(root->r,1)){returnfalse;}}returntrue;}intmain(){intK;cin>>K;for(inti=0;i<K;i++){intN;cin>>N;node*root=nullptr;for(intj=0;j<N;j++){intx;cin>>x;root=tostruct_tree(root,x);}boolflag=0;if(isredtree(root,flag)){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return0;}

总结:考察树的相关性质,对基本知识点掌握扎实就好做。注意题目要求,我刚开始就自己幻想出多余条件,和理解错题意而写错,在写代码的时候也难免会写出bug,需要有较强的debug能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 18:35:41

YOLOv8-Ultralytics 系列文章目录

YOLOv8-Ultralytics 系列文章目录 文章目录YOLOv8-Ultralytics 系列文章目录前言YOLOv8-Ultralytics 概述核心定位与优势核心技术架构YOLOv8-Ultralytics 源码讲解目标检测部分总结前言 YOLOv8是由Ultralytics公司&#xff08;创始人也是YOLO系列核心作者Joseph Redmon的合作者…

作者头像 李华
网站建设 2026/6/23 11:28:55

自动化运维工程师之ansible启动rpcbind和nfs服务

通过 systemd 模块分别启动 rpcbind 和 nfs 服务&#xff0c;并设置它们为开机自启&#xff0c;是 NFS 服务部署中启动相关服务的典型配置。下面我会逐部分解析代码的含义、作用以及关键细节。 一、代码整体功能总结 这段代码包含两个独立的 systemd 模块任务&#xff0c;依次完…

作者头像 李华
网站建设 2026/6/22 19:02:33

数字供应链系统哪个好?2025 供应链系统推荐排名来了,八大供应链系统

当数字化转型从“可选项”变为“必选项”&#xff0c;S2B2B供应链系统已成为企业重构供应链竞争力的核心工具。无论是解决传统批发企业“订单传递慢、库存不清”的沉疴&#xff0c;还是支撑新兴跨境商家“多渠道协同、全链路合规”的需求&#xff0c;一款高效的供应链系统都能让…

作者头像 李华
网站建设 2026/6/23 16:09:58

M.I.B.终极指南:解锁汽车娱乐系统的隐藏功能

你是否曾经对车载系统的功能限制感到困扰&#xff1f;为什么高端汽车的原厂娱乐系统总是缺少你想要的功能&#xff1f;如果你的车辆使用的是Harman MHI2或MHIG系列娱乐系统&#xff0c;那么M.I.B.就是你的完美解决方案。这个开源工具就像一个汽车系统的"多功能工具"&…

作者头像 李华
网站建设 2026/6/23 5:22:59

终极PHP兼容性检查工具:轻松应对版本迁移挑战

终极PHP兼容性检查工具&#xff1a;轻松应对版本迁移挑战 【免费下载链接】PHPCompatibility PHPCompatibility/PHPCompatibility: PHPCompatibility是一个针对PHP代码进行兼容性检查的Composer库&#xff0c;主要用于PHP版本迁移时确保现有代码能够适应新版本的PHP语言特性&am…

作者头像 李华