【问题标题】:Internal path length of red black tree红黑树的内部路径长度
【发布时间】:2016-07-14 12:20:42
【问题描述】:

我正在处理一个家庭作业问题,要求我们找到一棵红黑树的内部路径长度。这是我目前实现的代码。

int Tree::internalpathlength(BinTree* root_node, int curr_level){
int ipl;
if(root_node == NULL){
    return 0;
}
else if(root_node->colour == BLACK){
    ipl = (curr_level+internalpathlength(root_node->left,curr_level+1)+internalpathlength(root_node->right,curr_level+1));

}
return ipl;
}

我想我错过了递归的基本情况。有人可以帮助我更好地理解它吗? 谢谢。

【问题讨论】:

  • 如果条件都不匹配,则返回未初始化的值int ipl;
  • @πάνταῥεῖ。我修好了。我似乎仍然没有解决这个问题。我相信这与将根节点分配给 BLACK 有关。我不确定这是否是正确的做法。

标签: c++ recursion red-black-tree


【解决方案1】:

我认为正确的答案是我们不必检查根节点的颜色是否为黑色。应计算黑色和红色节点的内部路径长度。 如果我们不考虑红色链接,这意味着我们将通过红色链接连接的元素视为两个节点,事实并非如此。

int Tree::internalpathlength(BinTree* root_node, int curr_level){
    if(root_node == NULL){
    return 0;
    }
     else
      return (curr_level+internalpathlength(root_node->left,curr_level+1)+internalpathlength(root_node->right,curr_level+1));
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2012-07-08
    • 2011-02-10
    • 2013-02-09
    • 2018-01-06
    • 2010-09-06
    • 2013-01-08
    • 2012-11-30
    相关资源
    最近更新 更多