news 2026/8/9 13:20:36

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/8/9 10:02:09

9 个继续教育文献综述工具,AI 写作降重推荐

9 个继续教育文献综述工具&#xff0c;AI 写作降重推荐 论文写作的“重灾区”&#xff1a;文献综述与降重的双重挑战 在继续教育的学习过程中&#xff0c;撰写文献综述是一项既重要又令人头疼的任务。它不仅是对已有研究成果的梳理和总结&#xff0c;更是展现学术思维与研究能力…

作者头像 李华
网站建设 2026/8/9 5:43:53

Spark命令行工具终极指南:如何在Shell中快速生成数据可视化图表

Spark命令行工具终极指南&#xff1a;如何在Shell中快速生成数据可视化图表 【免费下载链接】spark ▁▂▃▅▂▇ in your shell. 项目地址: https://gitcode.com/gh_mirrors/spark/spark Spark是一个轻量级的命令行工具&#xff0c;专门用于在终端中生成简洁的Sparkli…

作者头像 李华
网站建设 2026/8/8 17:54:44

IT68051:支持3D的双端口HDMI 2.0b接收器

IT68051为双端口HDMI 2.0b接收器&#xff0c;支持6.0 Gbps/通道速度&#xff0c;每个端口最高18 Gb/s带宽。它完全兼容HDMI 1.4b/HDMI 2.0b、HDCP 1.4/HDCP 2.2&#xff0c;并且向下兼容DVI 1.0规范。IT68051具备深色&#xff08;最高36位&#xff09;功能&#xff0c;确保高质…

作者头像 李华
网站建设 2026/8/7 10:05:26

PyFluent 实战指南:构建Python驱动的CFD工作流

PyFluent 实战指南&#xff1a;构建Python驱动的CFD工作流 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/py/pyfluent 在当今工程仿真领域&#xff0c;将Python编程能力与专业CFD工具相结合已成为提升工作效…

作者头像 李华
网站建设 2026/8/9 5:16:10

终极Marlin固件配置指南:从零开始快速上手

终极Marlin固件配置指南&#xff1a;从零开始快速上手 【免费下载链接】Marlin Marlin 是一款针对 RepRap 3D 打印机的优化固件&#xff0c;基于 Arduino 平台。 项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin 还在为3D打印机固件配置头疼吗&#xff1f;每次…

作者头像 李华
网站建设 2026/8/8 4:40:28

图数据库性能卡顿怎么办,MCP DP-420 Agent优化方案全解析

第一章&#xff1a;图数据库性能卡顿的根源分析 图数据库在处理高度关联数据时展现出强大优势&#xff0c;但在实际应用中常出现查询延迟、响应缓慢等性能卡顿问题。其根本原因往往隐藏在数据模型设计、索引策略、硬件资源及查询语句优化等多个层面。 数据模型设计不合理 当节…

作者头像 李华