如何检查节点到其后代叶子的所有路径的黑色高度?

2024-04-07

Given a 红黑树,我需要写一个高效算法检查对于每个节点,从该节点到后代叶子的所有路径是否包含相同数量的黑色节点,即如果属性为 true 或 false,则算法应返回布尔值。


它将返回 RB 树的黑色高度。如果高度为0,则该树是无效的红黑树。

int BlackHeight(NodePtr root)
{
    if (root == NULL) 
        return 1;

    int leftBlackHeight = BlackHeight(root->left);
    if (leftBlackHeight == 0)
        return leftBlackHeight;

    int rightBlackHeight = BlackHeight(root->right);
    if (rightBlackHeight == 0)
        return rightBlackHeight;

    if (leftBlackHeight != rightBlackHeight)
        return 0;
    else
        return leftBlackHeight + root->IsBlack() ? 1 : 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查节点到其后代叶子的所有路径的黑色高度? 的相关文章

随机推荐

  • 计算组平均值,同时排除每个案例的个体值

    我有一个包含 70 个案例 研究参与者 的数据集 是否有一个函数可以计算这 70 个案例的平均值 以便分析中不包含每个单独的案例 这看起来像 mean for case x value 1 value n value x n 任何信息都会有
  • CSS 100% 宽度,每 20px 步长

    是否可以在纯CSS中设置一些宽度变化的步骤 假设我的 div 宽度为 100 所以当容器为 30px 时 它的宽度将为 30px 但是是否可以将一些 跳跃 设置为 20px 这样当容器为 30px 时 它仍然是 20px 但是当容器为 40
  • 使用 EaselJS 的无限画布

    有没有办法用 EaselJS 显示无限画布 我已经阅读了使用 Javascript 或 JQuery 执行此操作的方法 但是有什么方法可以使用 EaselJS 进行管理吗 Thanks 您可以使用 JavaScript jQuery 拖放画
  • Meteor 登录服务未配置

    我正在使用 Meteor loginWithFacebook 来让用户访问我的应用程序 代码是 Meteor loginWithFacebook loginStyle redirect function err if err throw e
  • 简单的倒计时器打字稿

    我的构造函数中有以下代码 constructor for let i 0 i lt 90 i setTimeout gt this counter this counter 1 1000 我真正想要的是显示一个倒计时 90 秒的数字 现在它
  • 如何在 UML 活动图上显示异步操作

    我即将绘制 记录一些客户端 服务器连接建立代码 以更好地理解它 有几个操作是在单独的线程中异步完成的 连接线程 数据接收线程等 我应该在单独的图表上显示它们吗 我更愿意将其放在单个图表上以掌握整体视图 但不知道如何在活动图上表示它 我不确定
  • 如何将本地 html 文件加载到 NativeScript webview 中

    我修改了 webpack config js 以添加一个名为 index html 的本地文件 代码如下 new CopyWebpackPlugin from glob index html from glob fonts from glo
  • AWS Cognito 托管 UI 在 URL 中返回 id_token

    我正在使用 AWS Cognito 的托管 UI 进行用户登录 id 令牌作为 URL 的一部分返回 如中所述https docs aws amazon com cognito latest developerguide cognito u
  • 实体框架中添加的多个实体可能具有相同的主键

    我正在使用 EF 4 0 的项目中工作 The Employee表有一列ReferEmployeeID其中包含在系统中引用新员工的员工的员工 ID 所以Employee是一个自引用表 现在 如果一个未添加到系统中的员工要添加 并且他还引用了
  • 如何抑制命令的错误消息?

    如何抑制 shell 命令的错误消息 例如 如果只有jpg目录中的文件 正在运行ls zip给出错误消息 ls zip ls cannot access zip No such file or directory 是否有一个选项可以抑制此类
  • 根据另一个列表从列表中过滤元素[重复]

    这个问题在这里已经有答案了 我想在Java 8 我有一个Boolean清单和另一个Object列表 这两个列表的大小始终相同 我想从中删除所有元素object列表 其中有false在相应的索引处boolean list 我将尝试用一个例子来
  • WPF datagrid 选定行单击事件?

    我想在双击 WPF DataGrid 的选定行时执行一些代码 我知道数据网格有一个 MouseDoubleClicked 事件 并且它还有一个行选定事件 但我没有看到任何 选定行双击 事件 您认为有可能以某种方式捕捉到这一事件吗 您可以在中
  • ModuleNotFoundError:没有名为“MySQLdb”的模块

    在完成我的一个 Flask 项目后 我像其他人一样将其上传到 github 上 2 3 个月后 我将整个 githube 存储库下载到另一台机器上来运行它 但是 该应用程序无法运行 因为找不到软件包 并显示以下消息 ModuleNotFou
  • 未找到 Hadoop 命令

    我已经在 Linux 机器上安装并配置了 hadoop 现在我正在尝试运行示例 MR 作业 我已经通过命令 usr local hadoop bin start all sh 启动了 hadoop 输出为 namenode running
  • 如何使用 c# excel interop 读取 excel 自定义文档属性

    我正在尝试检查是否已为 Excel 文件设置自定义文档属性 如果设置了则读取该值 这是我正在使用的代码 但到目前为止还没有运气 它不会进入 foreach 循环并出来 var propval ReadDocumentProperty Tes
  • OpenGL:重复使用具有不同参数的相同纹理

    在我的程序中 我有一个纹理 它在不同情况下使用多次 在每种情况下 我都需要应用一组特定的参数 我想避免创建额外的缓冲区 并在每次需要将其用于其他用途时实质上创建纹理的副本 所以我想知道是否有更好的方法 这是什么采样器对象 http www
  • 对“respond_to”与“respond_to”感到困惑吗?

    我正在通过railstutorial org学习Rails 但我对一些事情感到困惑 在本章 http ruby railstutorial org chapters modeling and viewing users two sec pa
  • 使用 cron 表达式流口水规则?

    我有一个要求 我只想在工作日触发规则 我有一些规则 如烟雾 温度 运动 您能否建议我如何根据我的要求制定规则 请给我一些示例 除了 cron 之外 还有其他更好的方法来根据时间触发规则吗 您可以在工作日或周末解雇规则 我也遇到过同样的要求
  • Internet Explorer 11 自动换行不起作用

    似乎自动换行不再适用于 IE 11 中的 textarea 元素 在 IE 10 及更早版本中 FF Safari 和 Chrome 自动换行按预期工作 IE 11 没有实现任何自动换行 我尝试将 wrap hard 添加到textarea
  • 如何检查节点到其后代叶子的所有路径的黑色高度?

    Given a 红黑树 我需要写一个高效算法检查对于每个节点 从该节点到后代叶子的所有路径是否包含相同数量的黑色节点 即如果属性为 true 或 false 则算法应返回布尔值 它将返回 RB 树的黑色高度 如果高度为0 则该树是无效的红黑