news 2026/7/7 5:00:38

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/7/7 18:34:41

【国产】华为欧拉操作系统openEuler-LTS-22.03安装Docker-Compose保姆级教程

本文主要介绍华为欧拉操作系统 openEuler-LTS-22.03 安装Docker-Compose保姆级教程。后面文章将介绍通过 Docker Compose 一键部署应用。 一、Docker Compose介绍 Docker-Compose是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose作用…

作者头像 李华
网站建设 2026/7/7 15:18:46

AI如何快速定位Nacos连接异常问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个工具&#xff0c;能够自动分析Nacos客户端连接异常&#xff08;com.alibaba.nacos.api.exception.nacosexception: client not connected&#xff09;的日志&#xff0c;并…

作者头像 李华
网站建设 2026/7/7 14:38:21

RxPermissions终极瘦身指南:5个技巧让AAR包体积减少40%

RxPermissions终极瘦身指南&#xff1a;5个技巧让AAR包体积减少40% 【免费下载链接】RxPermissions Android runtime permissions powered by RxJava2 项目地址: https://gitcode.com/gh_mirrors/rx/RxPermissions 在Android应用开发中&#xff0c;第三方库的体积优化一…

作者头像 李华
网站建设 2026/7/6 19:45:42

全方位解析MMRotate:旋转目标检测的终极解决方案

全方位解析MMRotate&#xff1a;旋转目标检测的终极解决方案 【免费下载链接】mmrotate OpenMMLab Rotated Object Detection Toolbox and Benchmark 项目地址: https://gitcode.com/gh_mirrors/mm/mmrotate 在当今计算机视觉领域&#xff0c;旋转目标检测技术正以前所未…

作者头像 李华
网站建设 2026/7/7 17:42:57

MATLAB编程:Sagnac环串并联结构微波光子滤波器滤波响应及频率响应分析

MATLAB编程&#xff1a;基于串并联Sagnac环的微波光子滤波器滤波响应频率响应分析。本文针对“基于串并联Sagnac环的微波光子滤波器滤波响应频率响应分析”相关MATLAB代码展开功能解析&#xff0c;代码包含SagnacH.m函数文件与SagnacSTST_H.m主程序文件&#xff0c;二者协同实现…

作者头像 李华