首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是“算法入门”(CLRS)中的红黑树插入伪码吗?

这是“算法入门”(CLRS)中的红黑树插入伪码吗?
EN

Software Engineering用户
提问于 2016-01-12 15:54:12
回答 1查看 3.2K关注 0票数 7

对于红黑树插入固定,这本书区分了6个案例,其中3个是对称的。这些情况是(z是插入的节点):

  • 案例1: Z的叔叔是红色的
  • 案例2: Z的叔叔是黑人,z是正确的孩子
  • 案例3: Z的叔叔是黑人,z是个左撇子

案例2是案例3的子集,因为我们可以用左旋转将案例2转换为3。

然而,在本书的伪代码中,您可以看到这里这里,它们编写如下:

代码语言:javascript
复制
if uncle.color == red:
  # Handle case
else if z == z.p.right:
  # Handle case 2
  # Handle case 3

这不应该是:

代码语言:javascript
复制
if uncle.color == red:
  # Handle case
else:
  if z == z.p.right:
    # Handle case 2
  # Handle case 3

我是不是遗漏了什么?本书是否以不同于Python的方式使用else if?C++实现提供了这里使用第二个版本,正如我预期的那样。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-01-12 16:05:54

代码中的缩进很重要:

代码语言:javascript
复制
if uncle.color == red:
     # Handle case
else if z == z.p.right:
          # Handle case 2
     # Handle case 3

语法有点奇怪,因为它们挤压if,使其出现在与else相同的行上,但与其余的案例3相比,case 2进一步向内缩进,表明它们不属于同一个组。

我认为这就是作者的意图:

代码语言:javascript
复制
if (uncle.color == red) 
{
   # Handle case
} 
else 
{ 
    if (z == z.p.right) 
    {
         # Handle case 2 
    }
    # Handle case 3 
}
票数 10
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/307195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档