c++ - 确定树的内部路径长度 (C++)

标签 c++ tree

好吧,我已经完成了程序的最后一个功能,并且已经完成了。我又遇到了一个我自己似乎无法解决的问题。

int Tree::InternalPathLength(Node * r, int value)
{
    if(r->left == NULL && r->right == NULL)
    {
        return 0;
    }
    return value + InternalPathLength(r->left, value+1) + 
        InternalPathLength(r->right, value+1);
 }

我觉得我已经接近解决方案了,但我知道我错过了一些东西。我认为这是另一个 if 语句,我尝试了不同的组合,但最终得到了一个崩溃的程序或 0 的答案。

任何建议或帮助将不胜感激!谢谢!

最佳答案

也许这有效:

int Tree::InternalPathLength(Node * r, int value)
{
    if(r->left == NULL && r->right == NULL)
    {
        return 0;
    }
    return value + ( r->left? InternalPathLength(r->left, value+1):0 )
                 + ( r->right? InternalPathLength(r->right, value+1):0 );
 }

或者只是为 NODE 添加 NULL 检查

int Tree::InternalPathLength(Node * r, int value)
{
    if (r == NULL ) return 0;
    if(r->left == NULL && r->right == NULL)
    {
        return value +1;
    }
    return value + InternalPathLength(r->left, value+1) + 
        InternalPathLength(r->right, value+1);
 }

关于c++ - 确定树的内部路径长度 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878456/

相关文章:

python - 在 Python 中遍历树的最有效方法是什么?

c++ - 如何使用 Boost C++ 遍历递归变量 vector

c++ - 创建集合 vector

c++ - 如何从 cpprest json 数组中删除元素?

c++ - 错误代码 : no matching function for call to

c++ - 强制 gcc 不内联函数

java - JNI(Java 和 C++)在 Ubuntu 11.10 上使用 Eclipse

c - 将数组添加到节点 n 叉树时出现段错误

c++ - 如何在这棵树中搜索?

Java类继承自引用类